2014-12-05 3 views
1

Я хотел бы сделать функцию при щелчке по вкладкам первой ячейки только в каждой строке. Это таблица построена с плагином, и этот метод не работаетФункция щелчка на ячейке таблицы

$('#ecoTableTotal').find('tr').find('td').eq(0).click(function(){ 
    console.log('click'); 
}) 

Это один работает, но мне нужно это только нажать на первой ячейке. Это возможно?

$('#ecoTableTotal').on('click', 'tr' , function (event) { 
     console.log('click'); 
    }); 

РЕДАКТИРОВАТЬ: Таблица генерируется с использованием Bootstrap таблицы (http://wenzhixin.net.cn/p/bootstrap-table/docs/index.html). This question также примерно такая же проблема с функцией щелчка.

+0

Там может быть, если и еще проверить, пока вы генерировании TD ... ты в порядке с что? –

ответ

2

Используйте :first-of-type селектор: http://api.jquery.com/first-of-type-selector/

jsBin demo

Как предложено в другом месте, :first-childне будет работать

  • не будет направлена ​​на i элемент (согласно вашему запросу), что на самом деле первые i. i.e: если перед элементом i у вас есть <br> или <b>bold</b>, чем i:first-child является больше не первый ребенок!

Кажется из ваших комментариев, что ваш TR создается динамически, так что, как

$('#ecoTableTotal').on("click", "tr td:first-of-type i:first-of-type", function(){ 
    console.log('click'); 
}); 

Более подробная информация о том, как использовать: use .on() with event delegation.


Чтобы возобновить, вы можете использовать эти два варианта:

"tr td:first-of-type i:first-of-type" 

или

"tr td:first-child i:first-of-type" 
// TD is always the first inside a valid TABLE TR so only here we can use 
// first-child, but there's no guarantee that a contextual <i> element is not 
// preceded by some other HTML element tag. 
+0

Странно не работает – Anuket

+0

@ Анукет Я дал вам рабочую демонстрацию выше, смотрите? –

+0

@Anuket jsBin имеет свою собственную консоль, нажмите на кнопку, чтобы открыть ее. –

1

Selector> означает, что вы заинтересованы только в прямом элементе ребенка, он помогает определить deph вашего селектора.

$('#ecoTableTotal').on('click', 'tbody > tr > td:first' , function (event) { 
     console.log('click'); 
}); 
+0

'tbody' является необязательным и в основном добавляется браузером. –

+0

Мне сказали, что хорошо всегда использовать его, чтобы все таблицы имели его. В любом случае я пытаюсь определить его во всех моих таблицах. – Beri

+0

, когда кто-то сказал вам что-то, первым докажите, что он не прав;) http://www.w3.org/TR/html5/tabular-data.html#the-tbody-element –

1
$('#ecoTableTotal').on('click', 'tr td:first-child' , function (event) { 
    console.log('click'); 
}); 

EDIT

$('#ecoTableTotal').on('click', 'tr td:eq(0)' , function (event) { 
    console.log('click'); 
}); 

EDIT

$('#ecoTableTotal').on('click', 'tr td:eq(0) i:eq(0)' , function (event) { 
    console.log('click'); 
}); 
+0

Спасибо, только эта работа. Может ли он быть расширен, чтобы щелкнуть только на элементе (единственный элемент) в этой ячейке? – Anuket

+0

@Anuket, любезно проверьте мой пост – Arvind

+0

@Arvind в вашем примере, используя '('#ecoTableTotal'). On ('click', 'tr i: first-child', function (event) {' больше не будет нацеливаться только первый 'i' *' (c.) «внутри этой ячейки» '* *, но также * first' i' * внутри каждой другой ячейки. –

Смежные вопросы