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,事件应该从元素或文档对象的静态父元素之一委托。

改变:

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

到:

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

或者:

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

试试这个:

$(document).on('click', '.pon', function(){
    alert('ook');
});
于 2013-02-11T10:39:50.460 回答
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 回答
-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 回答