ReplaceWith并在jQuery中提醒消息

时间:2013-02-11 10:37:19

标签: javascript jquery

我希望在点击新代码获取警报后用其他代码替换代码,但在我的代码中不起作用警报。怎么能解决它?

DEMO: 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 个答案:

答案 0 :(得分:3)

那是因为在你的标记中a.pon没有类pon的父元素,所以应该从元素或文档对象的静态父类之一委托事件。

变化:

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

要:

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

或者:

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

答案 1 :(得分:0)

试试这个:

$(document).on('click', '.pon', function(){
    alert('ook');
});

答案 2 :(得分: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');
    });
}

请参阅此小提琴fiddle Update

答案 3 :(得分:-1)

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