jQuery: указание индекса дочернего элемента <td>в функции onclick строки - PullRequest
2 голосов
/ 16 ноября 2010

У меня есть функция щелчка для строки таблицы, которая должна передавать содержимое первых двух тд в строке.

// Assign a click handler to the rows
$('#supportTables1 tr').click(function ()
{
    var firstTd = $(this).find('td').html();
    //need to get the next td.  below line doesn't work.
    var secondTd = $(this).find('td')[1].html();
    window.open('snglContactList.php'+'?search_word='+firstTD+'?list_name=secondTd);
});

Я могу получить первый тд просто отлично, но я нахожусь в тупике из-за того, что уверен, что это очень простой вопрос доступа ко второму тд (я пробовал разные способы установки его индекса).

Ответы [ 3 ]

5 голосов
/ 16 ноября 2010

Запись массива [1] возвращает элемент DOM, а не объект jQuery, поэтому вы не можете использовать .html() (метод jQuery) для него. Используйте функцию jQuery .eq(), чтобы получить элементы вместо:

  // Assign a click handler to the rows
  $('#supportTables1 tr').click(function ()
  {
        var firstTd = $(this).find('td').eq(0).html();
        var secondTd = $(this).find('td').eq(1).html();
        window.open('snglContactList.php'+'?search_word='+firstTD+'?list_name='+secondTd);
  });
0 голосов
/ 16 ноября 2010

$ (this) .find ('td') вернет все

в строке, по которой щелкнули. Вы можете использовать метод eq (idx), чтобы получить единицы по определенному индексу:
$('#supportTables1 tr').click(function ()
{
    var tds = $(this).find('td');
    var firstTd = tds.eq(0).text();
    var secondTd = tds.eq(1).text();
    window.open('snglContactList.php'+'?search_word='+firstTD+'?list_name='+secondTd);
});

Рабочий пример здесь (с предупреждениями, а не с window.open ...):

http://jsfiddle.net/E5Z5V/

0 голосов
/ 16 ноября 2010

Строки таблицы имеют собственную коллекцию содержащихся в них ячеек, к которой обращается свойство cells.

Сделайте это:

var firstTd = this.cells[ 0 ].innerHTML;
var secondTd = this.cells[ 1 ].innerHTML;

Или вы настаиваете на решении jQuery, сделайте следующее:

var firstTd = $(this.cells[ 0 ]).html();
var secondTd = $(this.cells[ 1 ]).html();

Пример: http://jsbin.com/ivabu4/

Обратите внимание, что первая версия самая быстрая, поскольку она напрямую обращается к свойствам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...