jquery按类隐藏行不起作用

时间:2012-03-17 21:12:00

标签: javascript jquery html

我试图将插入的行隐藏到具有“newrow”类的表中。

普通行有一个添加按钮,可以在它们下面添加这些新行。我有一个“隐藏”按钮,当我点击时,我想要隐藏“newrow”的插入,这将是表格行点击按钮后的行。香港专业教育学院试图解决它,并提出一个解决方案,但它不工作和越野车和写得不好。有什么想法吗?

继承我的隐藏方法

$(document).ready(function(){
    $(".hideRow").click(function(event){    

    var found;
    found=false;
    $('tr').each( function() {

        if($(this).attr('class')=='newrow'){
            $(this).hide();
            found=true;
        }
        else if(found==true && $(this).attr('class')=='row'){
            return false;
        }
    });


    }); 
});

5 个答案:

答案 0 :(得分:3)

不确定你想要实现的目标,但根据你所写的内容,这应该足够了。

$(".hideRow").click(function() {
    $(this).parents("tr").nextUntil("tr:not(.newrow)").hide();        
});

经过测试here

答案 1 :(得分:2)

jQuery具有内置函数来查找类名。当您使用attr('class')获取class属性时,它包含所有类的字符串,因此您可能会获得newrow row等。当您尝试将其与newrow进行比较时,您将无法匹配。

$(document).ready(function(){
    $(".hideRow").click(function(event){    
        $('tr .newrow').hide();
    });
});

如果您只想将点击的行中的行转到下一个普通row类,则可以使用.nextUntil()

$(document).ready(function(){
    $(".hideRow").click(function(event){    
        $(this).parents('tr').nextUntil('.row').hide();
    });
});

如果您的newrow元素也是类row,则需要执行此操作:

$(document).ready(function(){
    $(".hideRow").click(function(event){    
        $(this).parents('tr').nextUntil(':not(.newrow)').hide();
    });
});

如果我知道html的结构,这可能会被优化。我不知道,我基本上在猜测。

同样,仅供参考,您的return false实际上从.each()次迭代返回,而不是从.click()处理程序返回。

答案 2 :(得分:2)

是的,看起来过于复杂。您可以将CSS设置为display:none的类隐藏窗口。然后,您可以随意添加或删除此类。或者您可以使用hide();

根据我的理解,用户点击A行上的“添加”,然后创建行B,C ......然后,用户可以在行A上单击“隐藏”以隐藏行B,C ... < / p>

你最好给A行一个唯一的id(例如R32),然后给它创建一个类(C32--代表32的孩子)。然后当在R32上单击隐藏按钮时,您将关闭:

$('.C32').hide(); 

或者如果你创建了一个带有display none的类隐藏行:

$('.C32').addClass('hiderow');

您可以使用show();removeClass('hide row');撤消上述内容。您也可以使用toggle();

所有这些假设您可以拥有多个包含要隐藏的子项的表行。如果不是这种情况,则可能不需要为该行的子项使用唯一的行id和类。

答案 3 :(得分:1)

这应该可以解决问题。

$('.hideRow').click(function(){ 
    $('.newrow').hide();
}

否则你需要显示更多代码。尝试使用http://jsfiddle.net或类似网站更轻松地共享代码。

答案 4 :(得分:1)

如果动态创建行,请尝试使用

$('.newrow').live('click',function(){


});

这是jquery api文档http://api.jquery.com/live/

的链接