2016-06-23 1 views
1

내 js에 각 표 행에 대한 클릭 이벤트를 설정했습니다. 이것은 잘 작동합니다. 이 표의 마지막 열만 클릭 이벤트를 제거하려고 시도하지만 작동하지 않습니다.마지막 열에 대한 클릭 이벤트 비활성화

이유가 궁금하십니까? 선택기가 맞습니까? 아니면 td의 마지막 자식 이상을 선택해야합니까?

function addRowHandlers() { 
var table = document.getElementById("klauselliste"); 
var rows = table.getElementsByTagName("tr"); 
for (i = 0; i < rows.length; i++) { 
    var currentRow = table.rows[i]; 
    var createClickHandler = 
     function (row) { 
      return function() { 
       var cell = row.getElementsByTagName("td")[0]; 
       var name = cell.innerHTML; 
       window.location.href = '/Klausel/Detail?Name=' + name.trim(); 
      }; 
     }; 

    currentRow.onclick = createClickHandler(currentRow); 
} 



// Code Snippet 
addRowHandlers(); 
$("td:last-child").unbind("click"); 
// Code Snippet 
+0

'$ ("td"). last(). ("클릭");'시도해보십시오. 하지만 jQuery로 만들지 않은 html 이벤트를 jQuery로 바인딩 해제 할 수 있다면 확실하지 않습니다. 왜 그것을 'html 방식'으로 만들지 만 jQuery로 설정을 해제합니까? – eisbehr

+0

적어도'rows.length - 1'을 사용하십시오 ... 그러나이 모든 코드 모음 대신 jQuery를 사용하여 관련 클릭 이벤트를 바인딩하십시오 –

답변

0

코드를 "pure jQuery"로 다시 작성했습니다. 적은 코드, 동일한 노력. :not(:last-child)에 주목하면 행의 모든 ​​td이 선택되고 마지막 행은 execpt됩니다.

function addRowHandlers() { 
    $("table#klauselliste tr td:not(:last-child)").click(function() { 
     var name = $("td:eq(0)", $(this).parent()).html(); 
     window.location.href = '/Klausel/Detail?Name=' + name.trim(); 
    }); 
} 

는 작업 예를 들어 여기 참조 : https://jsfiddle.net/wuhtt7sc/1/

+0

감사합니다. 내가 이렇게하면 오류가 발생합니다. "Klausel.js : 21 Uncaught ReferenceError : $가 정의되지 않았습니다." 나는 그것의 원인이 테이블 isnt completly 아직로드 된 것 같아요. –

+0

아니요, 이는 jQuery가이 시점에서 올바르게로드되거나 포함되지 않았다는 의미입니다. 이 주먹을 확인하십시오. 그런 다음 jQuery 준비 상태에서 코드를 호출해야합니다. '$ (function() {/ * your actions here * /});'는 내 피들처럼. – eisbehr

+0

굉장 했어! JQuery는 Visual Studio의 번들에 포함되어 있지만 늦게까지 포함 ^^ 감사합니다. –

0

테이블의 마지막 요소를 찾을 수 .find()를 사용해보십시오.

$('#klauselliste tr').find('td:last').on('click', function (e) { 
e.preventDefault(); 
e.stopPropagation(); 
}); 
+1

그렇게하면 왜 그렇게 복잡합니까? '$ ('# klauselliste tr td : last'). off ("click"); 그리고 끝났습니다. – eisbehr

+0

당신은 맞습니다 @eisbehr. 나를 고쳐 주셔서 고마워요. =) – requenaxii