在追加后不要使用我的jQuery代码

时间:2013-12-05 09:25:10

标签: javascript jquery

追加后不要使用我的jQuery代码。怎么才能改变js代码并进行工作呢?

我不使用ides“#aaa或#sss”,如何不使用它们?

DEMO:http://jsfiddle.net/sq4kx/

HTML:

<a href="" class="qqq">Click Me</a>
<div id="aaa">
    <div id="sss">
    </div>
</div>

jQuery的:

$('.qqq').on('click', function (e) {
    e.preventDefault();
    $('#sss').empty().append('After typed must result alert: "This is ok" !??<div class="auto_box"><input name="we" class="de1"></div>');
})
$('.auto_box').on('keyup change', '.de1', function () {
    alert('This is ok');
})

3 个答案:

答案 0 :(得分:1)

试试这个,

$('#sss').on('keyup change', '.auto_box .de1', function () {
    alert('This is ok');
});

Demo 1

$('.qqq').on('click', function (e) {
    e.preventDefault();
    $('#sss').empty().append('After typed must result alert: "This is ok" !??<div class="auto_box"><input name="we" class="de1"></div>');    
    // bind event here
    $('.auto_box').on('keyup change', '.de1', function () {
        alert('This is ok');
    });
});

Demo 2

答案 1 :(得分:0)

尝试:

$(document).on('keyup change', '.de1', function () {
    alert('This is ok');
});

Updated fiddle here.

答案 2 :(得分:0)

'.auto_box'替换为文档。

$(document).on('keyup change', '.de1', function () {
    alert('This is ok');
});

原因:为什么上面的代码有效而你的代码没有?

1.您正在动态添加元素。简单来说,加载DOM时,您附加的元素不存在。

2.您需要为将来添加的元素分配Event Delegation。我们通常使用的方法如.click(...) , .on(..)等仅适用于当前在DOM中的元素。

3.这就是你提供活动授权的方式。

$(文档)。on('keyup change','。de1',function(){.........})