使用JQuery来指定隐藏/显示div的div容器,而不使用ID' s

时间:2014-08-04 21:50:31

标签: javascript jquery

我有一个下面的脚本,并希望定位show / hide div,因为单击复选框而不使用ID并限制每个容器中的隐藏/显示功能。有什么建议?

这是小提琴。 http://jsfiddle.net/45NRN/2/

这是jquery代码。

$('.c-input').live('change', 'checkbox', function() {
    var target = $(this).prev('.showHideDiv');
    if ($(this).find('input:checked').length == 0) {
        target.hide();
    } else {
        target.show();
    }
});

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题

$('.c-input').live('change', ':checkbox', function() {
    var target = $(this).closest('.c-input').prev().find('.showHideDiv');
    if ($(this).find('input:checked').length == 0) {
        target.hide();
    } else {
        target.show();
    }
});

DEMO

一些意见:

  • 'checkbox'替换为':checkbox'。您的选择器会找到名称为checkbox<checbox\>的标签,而不是您正在寻找的标签
  • 您的上下文中的
  • this是复选框,而不是.c-input元素。我更改了相关选择器以反映这一点。

答案 1 :(得分:0)

或者你可以这样做工作演示: - )http://jsfiddle.net/P8UFL/

  • 问题是您使用.prev作为另一个div内的元素 - &gt; wrap

因此,要正确遍历它,您可能需要在prev然后wrap find

上执行showHideDiv
  • HTML也有点无效&gt;使用您的复选框标记在/>中查看。

  • .live从1.7&gt;中删除。 Jquery版;另一种选择是.on只是一个注释。

希望这有助于:)

<强>代码

  var target = $(this).prev('.wrap').find(".showHideDiv");