1

ラジオボタンの変更イベントを発生させることができました。ただし、ラジオボタンがreplaceWithでマークアップに追加されるhtmlで機能するために必要になりました。

したがって、次のようにマークアップに追加されます。

$(this).replaceWith('<input type="radio" name="variety" value="null" id="myradio" />');

したがって、変更イベントをキャッチするためのコードは次のとおりです。

$('#myradio').change(function () {
        alert("Hello");
    });

それで、最初のページの読み込み後にラジオボタンがページに追加された場合、私がこれをどのように機能させるか知っている人はいますか?

4

4 に答える 4

2

.on()(jQuery 1.7+) または(jQuery 1.4.3+) を使用.delegate()して、動的に追加された要素を考慮して変更イベントをサブスクライブできます。

例えば:

$('#myradio').live('change', handler);                // jQuery 1.3+

$(document).delegate('#myradio', 'change', handler);  // jQuery 1.4.3+

$(document).on('change', '#myradio', handler);        // jQuery 1.7+

document.readyこのサブスクリプションをコールバック内に配置する必要がないことを指摘することも重要です。

于 2012-04-23T08:22:31.290 に答える
0

以下を使用できます。

$('body').on('change', '#myradio', function () {
    alert("こんにちは");
});

ラジオボタンを配置する要素が事前にわかっている場合は、パフォーマンスのためにその要素に一致するように「ボディ」セレクターを変更する必要があります。

于 2012-04-23T08:24:53.223 に答える
0

また:

  • on親にjQuery を使用する

    <div id="container">
        <!--replaceable elements-->
    </div>
    
    //this will take effect on current and future children
    $('#container').on('change','targetSelector',function(){
        alert("Hello");
    });
    
  • または新しい要素に直接バインドします

    function func(){
        alert("Hello");
    }
    
    var newEl = $('<input type="radio" name="variety" value="null" id="myradiobutton" />');
    newEl.change(func);
    $(this).replaceWith(newEl);
    

ただし、パフォーマンスとクリーンなコードのために、最初のものを好みます。

于 2012-04-23T08:25:00.673 に答える
0

ラジオ ボタンを作成し、変更イベントを追加してから、ラジオ ボタンに置​​き換えることができthisます。

var $radio = $('<input type="radio" name="variety" value="null" id="myradio" />');
$radio.change(function () {
    alert("Hello");
});
$(this).replaceWith($radio);
于 2012-04-23T08:27:27.343 に答える