1

新しいコードをクリックしてアラートを取得した後、コードを他のコードに置き換えたいのですが、コードでアラートが機能しません。どうすれば修正できますか?

デモ: http://jsfiddle.net/9Ggsn/

HTML:

<select>
    <option>select 1</option>
    <option>select 2</option>
    <option>select 3</option>
</select>
<div class="dfg"><a href="#">Test</a></div>

jQuery:

$('select').on('change', function(){
    //alert('ook');
    $('.dfg a').replaceWith('<a href="#" class="pon">Link</a>')
});
$('.pon').on('click', 'a', function(){
    alert('ook');
});
4

4 に答える 4

3

これは、マークアップに のa.ponクラスを持つ親要素がないためpon、要素またはドキュメント オブジェクトの静的な親の 1 つからイベントを委任する必要があるためです。

変化する:

$('.pon').on('click', 'a', function(){

に:

$(document).on('click', 'a.pon', function(){

または:

$('.dfg').on('click', 'a.pon', function(){
于 2013-02-11T10:38:39.533 に答える
0

DOM から要素を削除しているため、再バインドする必要があります。

$('select').on('change', function(){
        //alert('ook');
        $('.dfg a').replaceWith('<a href="#" class="pon">Link</a>');
        BindLink();
    });

function BindLink(){
    console.log("in link");
    $('.pon').on('click', function(e){
        e.preventDefault();
        alert('ook');
    });
}

このフィドルフィドル更新を参照してください

于 2013-02-11T10:42:21.350 に答える
0

これを試して:

$(document).on('click', '.pon', function(){
    alert('ook');
});
于 2013-02-11T10:39:50.460 に答える
-1
$('select').on('change', function(){
    //alert('ook');
    $('.dfg a').replaceWith('<a href="#" class="pon">Link</a>')
});
$('body').delegate('.pon','click', function(){
    alert('ook');
});
于 2013-02-11T10:41:05.773 に答える