0

以下のスクリプトでは、クラス「cb-checkURL」のすべてのチェックボックス項目を評価しようとしています。チェックした場合、jQuery show()を介して最も近い「.wl-options」divをdisplay:blockに設定します。

しかし、私は何かが欠けています、.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ソース

<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>
4

3 に答える 3

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/

于 2013-02-14T14:53:00.797 に答える
0

DOMで要素を選択していません。"$ .each()関数は$(selector).each()と同じではありません。これは、jQueryオブジェクトに対して排他的に反復するために使用されます。"、http: //api.jquery.com/jQuery.each / 試してみてください:

jQuery(".cb-checkURL").each(function( index ) {})
于 2013-02-14T14:46:51.480 に答える
0
  jQuery.each( ".cb-checkURL", function() {

あなたが欲しい

$(".cb-checkURL").each(function(index) {
    // do something on each .cb-checkURL
  });
于 2013-02-14T14:49:42.813 に答える