使用jQuery .each()根据复选框的状态预设可见性

时间:2013-02-14 14:44:23

标签: jquery each

在下面的脚本中,我试图用类“cb-checkURL”评估所有复选框项目,如果选中,我想设置最近的“.wl-options”div来显示:block via jQuery show()

然而,我错过了一些东西,但是.each没有做好这个工作。有什么想法吗?

jQuery(document).ready(function(){
    jQuery.each( ".cb-checkURL", function() {
        if(jQuery(this).attr("checked")){
            jQuery(this).parent().next(".wl-options").show();
        }
        else
        {
            jQuery(this).parent().next(".wl-options").hide();
        }
    });

    jQuery(".cb-checkURL").click(
        function(){
            jQuery(this).parent().next(".wl-options").toggle();
        });
})';

HTML SOURCE

<label class="wl-active">
    <input class="cb-checkURL" type="checkbox" name="wl[item-2][location][is_url]" checked="checked">&nbsp;URL
</label>
<div class="wl-options" style="clear:both;max-width:400px;display:none">
    <div class="cb-urls">
        <label title="Enter one url slug per line" for="wl[item-2][url][urls]"></label>
        <textarea name="wl[item-2][url][urls]" id="wl[item-2][url][urls]"></textarea>
    </div>
</div>

3 个答案:

答案 0 :(得分:2)

可能会简单得多:

jQuery(document).ready(function(){
    var handler = function() {       
        jQuery(this).parent().next(".wl-options").toggle(jQuery(this).is(':checked'));        
    };

    jQuery(".cb-checkURL").click(handler).each(handler);          
});

JSFiddle:http://jsfiddle.net/jA4wS/

答案 1 :(得分:0)

您没有在DOM中选择任何元素。 “$ .each()函数与$(selector).each()不同,后者用于通过jQuery对象进行独占迭代。”,http://api.jquery.com/jQuery.each/ 试试:

jQuery(".cb-checkURL").each(function( index ) {})

答案 2 :(得分:0)

  jQuery.each( ".cb-checkURL", function() {

你想要

$(".cb-checkURL").each(function(index) {
    // do something on each .cb-checkURL
  });