2011-06-14 5 views
3

라고 :정지 HREF 링크는 내가 링크가

<h2><a href=?p=article&aid='.$article->id.'" onclick="loadPage('article'); return false;">.$article->title.</a></h2> 

을하고이 함수를 호출

function loadPage(page){ 
    $("#content").html("Loading..."); 

    $.post("page.php", {p: page}, function(data){ 
     $("#content").html(data); 
    }); 
} 

하지만 내 자바 스크립트가 실행 된 후에 href가 여전히 활성 상태입니다. return false를 사용했습니다. 내 onClick에 전에 이것을 방지하기 위해하지만 그것은 이번엔 작동하지 않는가 ???

+0

첫 번째 코드 스 니펫을 확인하고 업데이트하십시오 (실제로 복사 한 내용 만 복사하십시오). 아무 것도 할 수있는 방법이 없으므로 – mkilmanas

+0

athesyn.php 내부에서 어떤 처리를합니까 – Dejan

답변

1

스크립트에 오류가 있으며 리턴 블록에 도달하지 않은 것 같습니다. try catch를 추가하면 스크립트에서 오류를 무시합니다.

function loadPage(page){ 
try{ 
    $("#content").html("Loading..."); 

    $.post("page.php", {p: page}, function(data){ 
     $("#content").html(data); 
    }); 
} catch(err){} 
} 
1

로직이 더 잘 분리되어 있기 때문에 jQuery를 사용하여 함수에 click 이벤트를 바인딩하는 것이 더 나을 것입니다. href가 여전히 활성 상태 인 경우

$('h2 a').click(function(event) { 
    $("#content").html("Loading..."); 

    $.post("page.php", {p: page}, function(data){ 
     $("#content").html(data); 
    }); 

    return false; 
}); 

보통, 자바 스크립트 오류가 발생했습니다 그것은 가능성이 있다는 것입니다.

편집 :event.preventDefault()을 사용하면 href에 이어 이러한 방식으로 바인딩 된 클릭 기능이 중지됩니다.

마지막으로 href은 매우 잘 형성되어있는 것으로 보입니다 (시작 인용 부호 누락). 그건 오타예요?

+2

동의합니다 'e.preventDefault();'(여기서'e'는 클릭 핸들러에 전달 된 이벤트 인수입니다)가 더 적절합니다 ([event.preventDefault()] (http : // api .jquery.com/event.preventDefault /)) – mkilmanas

1

가장 좋아하는 방법은 href 속성을 바꾸는 것입니다. 이것은 비 JS 클라이언트와의 호환성을 유지하고 이벤트 나 그와 같은 마법을 '멈추는'일을 처리 할 필요가 없다는 장점이 있습니다. 예를 들어 :

function unobtrusiveLinkSetup(link) { 
    // replace the about link's href 
    J(link).attr('jshref', J(link).attr('href')); 
    J(link).removeAttr('href'); 

    // handle the link's action 
    J(link).click(function(index) { 
      J(this).stop(); 
      // make a request in the background 
      J.get(J(this).attr('jshref'), function(result) { 
       // whatever you need to do with the link.. 
      }); 
    }); 
} 

그럼 그냥 문서의 준비 기능, 또는 어디든지 다른 사람에 unobtrusiveLinkSetup("#myLink");을 할 수 있습니다.

+0

이것은 내가 필요한 것입니다. 내 링크에서 onclick 이벤트를 제거했지만 href 이벤트가 계속 발생했습니다. 감사! –

관련 문제