2011-09-01 6 views
4

나는 일부 행이있는 테이블을 가지고 있고 잘 작동하는 거래 정보 저장소어떤 TD를 클릭 했습니까? JQuery와

$("tr").click(function(e) 
{ 
    console.log($(this).data("rowid")); 
}); 

에 클릭 이벤트를 적용 할 jQuery를 사용하고 있습니다. TD 중 하나인데 실제 링크가 있는데 링크를 클릭해도 여전히 console.log가 출력됩니다. 링크를 클릭하면 클릭 기능을 종료 할 수 있습니까?

답변

3

전화 event.stopPropagation();

이것은 당신이 내에서의 링크를 클릭하면 발사에서 부모 <tr> 요소의 클릭 이벤트를 방지 할 수
$('td a').click(function(event) { 
    event.stopPropagation(); 
}); 

a <td>. 내가 열 클릭을 감지하는 로직을 변경하고 클릭 된 열을 확인한 후, 행에 CONSOLE.LOG을 실행할 것 http://jsfiddle.net/ALUZy/

+0

, 감사합니다. 이 제한 시간이 지나면 5 분 안에 수락 할 것입니다. – Ronnie

2

당신은 아마 당신의 방법을 적용해서는 안 클래스 유형을 추가해야

0

:

다음은 작업 예입니다. 단지 앵커를 포함하지 않는 테이블 행이 클릭 기능을 적용 할 수

$("tr").each(function(t){ 
    if($("a", this).length == 0){ 
     $(this).click(function(e) { 
      console.log($(this).data("rowid")); 
     } 
    } 
}); 

:

$('td').click(function(){ 
    if ($(this).not('a')){ 
     console.log($(this).closest('tr').data("rowid"));   
    } 
}); 
0

은 당신이 뭔가를 할 수 있습니다. 여전히 <a>로 TD를 제외하고, 해당 행에 적용 할 경우, 대신 $("td").each(...)를 사용하고 $(this).parent().data("rowid"))

2

는 앵커 건너 뛰기 :이 위대한 일을

$("tr").click(function(e) 
{ 
    if (e.target.tagname.toLowerCase() == 'a') 
     return; // Do nothing. 
    console.log($(this).data("rowid")); 
}); 
관련 문제