2010-04-05 5 views
5

3 개의 열이 포함 된 표가 있습니다. jQuery를 사용하여 해당 열 중 하나를 클릭 할 때마다 발생하는 이벤트를 바인딩해야합니다.요소, jQuery 또는 Javascript 색인

그러나 클릭 한 열의 인덱스를 알아야합니다.

즉 : 첫 번째 열 (인덱스 0), 두 번째 열 (인덱스 1), 세 번째 열 (인덱스 2), 등등 ...

어떻게 그렇게 할 수 있습니까?

var에 FIRSTROW :

var firstRow = $("tr:first > th", "table[id*=Grid]"); 

을 살펴 보자

firstrow.click(function(e){ 
//var id = e.target.index; 
var id = $(e).parent().children().index(this);//returns -1 
}) 
+0

'무엇을 firstrow' 것 .prevAll()를 사용하여 좋아? ''? 당신은''을 클릭해야합니다 ... jQuery를 사용하는 델리게이트 함수가이를 수행하는 가장 깨끗한 접근법입니다. –

+0

firstrow, 첫 번째 행의 모든 ​​요소 "" – ozsenegal

답변

6

당신은 할 수 있습니다이 .index()를 사용하여이 같은, (그것을 기반으로 0이다) :

$("td").click(function() { 
    var i = $(this).parent().children().index(this); 
    alert(i); 
}); 
+0

은 (e) {}를 사용하여이 작업을 수행하려고합니다. 즉 : e.target.index – ozsenegal

+0

@ozsenegal - 작동합니다. 시도해보십시오.) http://jsfiddle.net/F5ALE/ –

+0

아니, 그다지 .Walys는 "-1"을 반환합니다. – ozsenegal

2

것은 그것은 수 있습니다 기본 자바 스크립트를 사용하는 더 좋은 아이디어 대신 .rowIndex jQuerys .index. jQuery는 표 머리 (TH) 요소를 감지하는 데 약간의 문제가있을 수 있습니다.

+0

'.rowIndex'를 사용하여 어떻게 컬럼의 인덱스를 얻을 수 있을까요? –

+0

'this.cellIndex'가되어야합니다. 하지만 예 : jQuery를 노드 목록으로 검색하는 것보다 훨씬 간단하고 효율적입니다. – bobince

+0

예, 클릭 이벤트 처리기 코드 내에서 this.rowIndex()/this.cellIndex() – jAndy

0

나는 항상

$('table').click(function(e) { 
    var $targ = $(e.target); 
    if ($targ.is('th')) { 
    var position = $targ.prevAll().length; 
    alert(position); 
    } 
}); 

Preview on jsbin

관련 문제