Javascript 从下一个td[jQuery]中选择隐藏的输入

Javascript 从下一个td[jQuery]中选择隐藏的输入,javascript,jquery,html,jquery-selectors,hidden-field,Javascript,Jquery,Html,Jquery Selectors,Hidden Field,我有一张桌子是这样布置的: <td> somename </td> <td class="hoverable value" > somevalue </td> <td class="changed"> </td> <td class="orig

我有一张桌子是这样布置的:

        <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);
    })
});
$(文档).ready(函数(){
var newHTML='';
$('table td.hoverable')。悬停(
函数(){
var oldHTML=$(this.html().trim();
$(this.html(“”);
},
函数(){
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);
})
});
但它不起作用。显然失败的是获取隐藏字段的值,我尝试了几种不同的方法来选择它,但就是无法获得它。 非常感谢您的任何想法或建议;)

试试看

$(this).next('td.original').find('input:hidden').val();
试一试

替换

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

替换

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


您需要使用.nextAll()


为什么??因为正在获取下一个元素并查看它是否与选择器匹配。如果使用,将获得与选择器匹配的下一个元素。

您需要使用.nextAll()


为什么??因为正在获取下一个元素并查看它是否与选择器匹配。如果使用,则会得到与选择器匹配的下一个元素。

否,它会不断返回“undefined”(未定义)。这可能无助于解决原始问题,但它在语法问题上帮助了我。谢谢。不,它一直返回“undefined”。这可能无助于解决最初的问题,但它帮助我解决了一个语法问题。谢谢,真是太棒了!谢谢!很高兴知道其中的区别。jQuery文档说.next()正是以这种方式工作的,但不是以直观理解的方式工作的。当我最近试图做完全相同的事情时,这种行为让我感到震惊。它真的很有魅力!谢谢!很高兴知道其中的区别。jQuery文档说.next()正是以这种方式工作的,但不是以直观理解的方式工作的。当我最近试图做同样的事情时,这种行为让我感到震惊。
var oldHTML = $(this).next('td.original').find('input:hidden').val();
var oldHTML = $(this).nextAll('td.original').find('input:hidden').val();