jQuery:使用.html()或.append()添加的目标元素

Rao*_*ito 0 html javascript jquery dom

当我添加在DOM元素使用.html(),.append()或者.appendTo(),我便不管理的目标添加的元素.

HTML

<div>
    <em class="button" id="old">old button</em>
</div>
Run Code Online (Sandbox Code Playgroud)

jQuery的

var newButton = '<em class="button" id="new">new button</em>'
var oldButton = '<em class="button" id="old">old button</em>'

$('#old').click(function(){
    $('div').html(newButton);
});

$('#new').click(function(){
    $('div').html(oldButton);
});
Run Code Online (Sandbox Code Playgroud)

后面的代码替换了原来<em class="button" id="old">old button</em><em class="button" id="new">new button</em>,但后来我没有设法将新添加#new的jQuery 作为目标.

我找不到.html()API文档的解释,任何想法?

这是一个可以更新的JSFiddle.

RRK*_*RRK 9

您需要对动态添加/更改的元素使用事件委派.

var oldButton = '<em class="button" id="old">old button</em>'
var newButton = '<em class="button" id="new">new button</em>'
$(document).on('click', '#old', function(){
    $(this).closest('div').html(newButton);
});
$(document).on('click', '#new', function(){
    $(this).closest('div').html(oldButton);
});
Run Code Online (Sandbox Code Playgroud)
.button {
    display:inline-block;
    padding: 10px;
    cursor: pointer;
}
#old { background-color: yellow; }
#new { background-color: orange; }
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<div>
    <em class="button" id="old">old button</em>
</div>
Run Code Online (Sandbox Code Playgroud)