1

Wordpressはウィジェットフォームの入力フィールドをAJAXでロードしているようです。したがって、ドキュメントの準備ができているときにロードするものをターゲットにすることはできません。.onはイベントを再バインドする方法であり、それをいじってみましたが、うまくいかないようです。次の例で.onをどのように使用しますか?そして、それだけが必要ですか?

これはウィジェットフォームに読み込まれます。

<fieldset id="fieldradio">
    <legend>pick</legend>
    <input type="radio" name="radiobutton" value="Yes" />
    <input type="radio" name="radiobutton" value="No"  />
</fieldset>

<fieldset id="field1" style="display:none;">
    <legend>this is field 1</legend>
    <input type="text" name="fdsa" value="value1" /><br />
    <input type="text" name="fdsa" value="value1" /><br />
</fieldset>

<fieldset id="field2" style="display:none;">
    <legend>this is field 2</legend>
    <input type="text" name="asdf" value="value2" /><br />
    <input type="text" name="asdf" value="value2" /><br />
</fieldset>

そしてこれは私が使いたいjavascriptです:

jQuery("input[name=radiobutton]").change(function(){          

    if (jQuery(this).val() == "Yes") {
        jQuery("#field1").fadeIn('slow');
    }
    else {
        jQuery("#field1").hide();
    }    

    if (jQuery(this).val() == "No") {
        jQuery("#field2").fadeIn('slow');
    }
    else {
        jQuery("#field2").hide();
    }         
4

2 に答える 2

2

動的に生成された要素の場合、イベントは要素またはドキュメントオブジェクトの静的な親の1つから委任する必要がありますon。メソッドを使用できます。

$(document).on("change", "input[name=radiobutton]", function(){  
      var ind = $(this).index('input[type=radio]');
      $('fieldset:gt(0)').hide().eq(ind++).show()   
});

http://jsfiddle.net/MaNkE/


$(document).on("change", "input[name=radiobutton]", function(){  
     var ind = $(this).index();
     $('#field1, #field2').hide().filter('#field'+ind).show()
})

http://jsfiddle.net/35tpE/

于 2012-09-27T02:33:41.700 に答える
1

ドキュメントのを確認してください。これはあなたが望む構文です:

jQuery("body").on("change", "input[name=radiobutton]", function(){         
    $(this).parent().hide();
});

あれは$("container").on("event", "selector", handler);

于 2012-09-27T02:18:18.577 に答える