如何隐藏与其依赖的字段在同一行中的字段

时间:2012-10-30 16:11:01

标签: javascript jquery jquery-selectors

我是jquery的新手,但是我有一个表,每行中有一个字段依赖于行中的另一个字段(复选框)。因为它在表中我需要批量处理它们。我不认为我正在使用next(),但我正在尝试抓住下一个.subnet_mask,因为它将是隐藏它的同一行中的那个。一旦我到达那里,我还必须更新它,以便它处理隐藏并显示是否选中了复选框。

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

感谢任何帮助!

编辑:好的确定:)这个页面实际上是用VisualForce编写的(对于salesforce)。为了简单起见,我们可以说它只是一个表格包裹着一个表格(最多20行代表不同的记录),显示一个带有.dhcp类的复选框字段和一个调用.subnet_mask的字段,该字段应根据复选框显示/隐藏。这有用吗?

3 个答案:

答案 0 :(得分:1)

我宁愿这样做

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

然后,每次点击.submask

时,您都会显示/隐藏下一个.submask(假设每<tr>一个.dhcp

答案 1 :(得分:0)

我建议如下,但是一旦我看到相关的HTML,这个建议可能会改变:

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

这假设每行只有一个.subnet_mask个元素(否则会隐藏所有这些元素)以响应click事件。你提到这取决于一个复选框,所以使用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();
        }
    });

参考文献:

答案 2 :(得分:0)

您正在使用下一个错误。应该更像这样:

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

对于这种情况,我假设.dhcp.subnet_mask确实是兄弟姐妹,后者紧接着前者。否则,.nextAll()可以替换.next()

按以下方式编辑。