Выберите скрытый вход из следующего тд [jQuery] - PullRequest
1 голос
/ 20 мая 2010

Я выложил таблицу так:

        <td>
                somename
        </td>
        <td class="hoverable value" >
                somevalue
        </td>
        <td class="changed">

        </td>
        <td class="original value">
            <input type="hidden" value="somevalue" />
        </td>

И то, что я пытаюсь сделать, это то, что я наведите курсор мыши на указатель td, который превращает его в текстовое поле. После того, как я наведусь, я хочу проверить скрытое поле на предмет его первоначального значения и поместить изображение в измененное, если 2 отличаются друг от друга. У меня уже есть это:

$(document).ready( function() {
    var newHTML = '';

    $('table td.hoverable').hover(
    function () {
        var oldHTML = $(this).html().trim();
        $(this).html('<input type=\'text\' value=\'' + oldHTML + '\' size=\'' + ((oldHTML).length + 2) +'\' />');
    },
    function() {
        newHTML = $('input', this).val();
        var oldHTML = $(this).next('td.original').children('hidden').val();
       if(newHTML != oldHTML) {
            $(this).next('td.changed').html('Changed');
        }
        $(this).html(newHTML);
    })
});

но это не работает. Очевидно, что не удается получить значение скрытого поля, и я попытался выбрать его несколькими различными способами, но просто не могу добраться до него. Будем благодарны за любые идеи или советы;)

Ответы [ 4 ]

5 голосов
/ 20 мая 2010

Вам необходимо использовать .nextAll ()

var oldHTML = $(this).nextAll('td.original').find('input:hidden').val();

Почему? Потому что .next () берет следующий элемент и проверяет, соответствует ли он селектору. Если вы используете .nextAll () , вы получите следующий элемент, соответствующий селектору.

1 голос
/ 20 мая 2010

Попробуйте

$(this).next('td.original').find('input:hidden').val();
0 голосов
/ 20 мая 2010

Заменить

var oldHTML = $(this).next('td.original').children('hidden').val();

С

var oldHTML = $(this).next('td.original').find('input:hidden').val();
0 голосов
/ 20 мая 2010
var oldHTML = $(this).next('td.original').children(':hidden').val();
...