0

我是 jquery 的新手,但我有一个表,每一行都有一个字段,该字段依赖于该行中的另一个字段(复选框)。由于它在一张桌子上,我需要批量处理它们。我认为我没有正确使用 next() 但我试图抓住下一个 .subnet_mask 因为它将与隐藏它在同一行中。一旦我到达那一步,我还必须更新它,以便它处理隐藏和显示复选框是否被选中。

$(function() {
    $('.dhcp').each(function() {
        $(this).click(function(){
            $('.subnet_mask').next().hide();
        });
    });
});

任何帮助表示赞赏!

编辑:好的好的 :) 该页面实际上是用 VisualForce 编写的(用于销售人员)。为简单起见,可以说它只是一个包裹在表格周围的表格(最多 20 行代表不同的记录),显示一个带有 .dhcp 类的复选框字段和一个名为 .subnet_mask 的字段,该字段应根据复选框显示/隐藏。这有帮助吗?

4

3 回答 3

1

我宁愿这样做

$('.dhcp').on('click', function() {
    $(this).nextAll('.subnet_mask').toggle();
});

然后,.submask每次单击.submask<tr>.dhcp

于 2012-10-30T16:15:39.280 回答
0

我建议以下,尽管一旦我看到相关的 HTML,这个建议可能会改变:

$('.dhcp').click(
    function(){
        $(this).closest('tr').find('.subnet_mask').hide();
    });

这假定.subnet_mask每行只有一个元素(否则这将隐藏所有元素)以响应点击事件。您提到这取决于一个复选框,因此使用以下change()方法可能会更好:

$('.dhcp').change(
    function(){
        var that = $(this);
        if (that.is(':checked')) {
            that.closest('tr').find('.subnet_mask').hide();
        }
        else {
            that.closest('tr').find('.subnet_mask').show();
        }
    });

参考:

于 2012-10-30T16:14:54.240 回答
0

您使用 next 不正确。它应该更像这样:

$(function() {
    $('.dhcp').each(function() {
        $(this).click(function(){
            $(this).next('.subnet_mask').hide();
        });
    });
});

对于这种情况,我假设.dhcp并且.subnet_mask确实是兄弟姐妹,因为后者紧随前者之后。否则,.nextAll()可以代替.next()

根据以下几点进行编辑。

于 2012-10-30T16:20:12.837 回答