2016-02-16 4 views
0

Может кто-то, пожалуйста, помогите мне взломать это. У меня есть таблица HTML с событием при нажатии, чтобы показать диалог. Я также хочу получить индекс строки щелкнутой строки, но он выводит только что-то другое.Получение индекса строки таблицы HTML из события щелчка таблицы - JQuery

//script for the table event 
<script> 
    $(function() { 
     $("#table").click(function(){ 

      $("#dialog-modal1").dialog({ 
       height: 140, 
       modal: true, 
       title:"Search Item", 
       width : 440, 
       position: {my: "top", at: "bottom", of: "#table"} 
      }); 
      $("#dialog-modal1").show(); 

      var row = $('<tr></tr>').text($(this).index()); 
      alert(row); 

     }); 
    }); 
</script> 

Диалог показывает, как ожидается, когда нажата таблица, но вывод индекса строки не является тем, что я хочу. Он всегда выводит [объект Объект]. Если первая строка таблицы была нажата, я ожидал выхода быть , вторая строка должна быть и так далее. Что я делаю не так?

+2

вы должны использовать 'console.log (row)' вместо 'alert (row)' и смотреть результат в консоли. – cl3m

+0

@ cl3m console.log (строки) выходы ** [tr] **. Не то, что я хочу. – user5747822

+0

У вас много ошибок в коде. 1. Внутри обработчика 'click' 'это' фактически элемент 'table', а не' tr'. 2. '' строка '' '' '' '' '' и 'tr' не может содержать текст, только' td' или 'th' ... 3. Вы видите объект [object object] 'потому что' row' var хорошо ... объект. Вероятно, вы хотели предупредить значение '.index()' ... 4. Посмотрите мой ответ :-) –

ответ

0

Одна из проблем заключается в том, что вы привязываете событие click ко всей таблице.

$("#table").click(function() { ... 

Попробуйте

$("#table tr").click(function() { ... 

Это означает, что вы связывание события каждой строку в таблице. Теперь в обратном вызове this будет отображаться строка, на которую была нажата кнопка.

Вам также не нужно использовать оповещение (как предложено @ cl3m) или даже создать tr для вывода индекса. Вы должны иметь возможность просто позвонить:

console.log($(this).index()); 

и посмотреть результат в отладчике вашего браузера.

Вот рабочая скрипку:

https://jsfiddle.net/860b9t73/

+0

Правильно, он сработал – user5747822

+0

Спасибо большое @Sergio – user5747822

0

Отъезд JsFiddle demo

HTML

<table> 
    <tr> 
    <td>FIRST</td> 
    </tr> 
    <tr> 
    <td>SECOND</td> 
    </tr> 
    <tr> 
    <td>THIRD</td> 
    </tr> 
</table> 
<div id="result"></div> 

JS

$('tr').click(function(){ 
    var $tr = $(this); 
    $('#result').html("index clicked: " + $tr.index()); 
}); 
Смежные вопросы