如何使这个代码更紧凑

时间:2010-11-07 11:47:34

标签: jquery html css

我有一个构造,检查是否选中了复选框(谁可以使用更多单词'check'以便彼此接近?=))当文档加载时,如果选中它,表中的某些行会被隐藏。它看起来像这样:

if (jQuery('#navbar_disabled').is(':checked')) {
        jQuery('#navbar_disabled').parents('tr').prev().hide();
        jQuery('#navbar_disabled').parents('tr').prev().prev().hide();
    }

我确信有一种快速的方法可以摆脱那些最后的'#navbar_disabled'并使用类似'this'之类的内容。我知道我可以使用类似var navbar_checkbox_disabled=jQuery('#navbar_disabled')的东西来处理它,但我正在寻找一个更可爱的解决方案,如果它在那里。感谢。

更新:为什么我要求的另一个解决方案,而不仅仅是将其分配给一个新变量,我需要在许多元素上使用它,如下所示:

jQuery('#company_address_disabled, #sociallinks_disabled, #contacts_mail_disabled, #navbar_disabled')

2 个答案:

答案 0 :(得分:4)

为什么不将它用作过滤器,如果未检查它将使jQuery对象为空:

jQuery('#navbar_disabled:checked').parents('tr').prev().hide().prev().hide();

答案 1 :(得分:1)

这样的事可能!?

$tr = $('#navbar_disabled').parents('tr').prev();
if ($('#navbar_disabled').is(':checked')) {
        $tr.hide();
        $tr.prev().hide();
    }

编辑:

你认为在这些元素上添加课程吗?我想你的代码看起来像这样:

<tr class='hide_me'><td>prev</td></tr>
<tr class='hide_me'><td>prev</td></tr>
<tr><td><input id="navbar_disabled" /></td></tr>


    if ($('#navbar_disabled').is(':checked')) {
            $('.hide_me').hide();
        }