如何使用jquery在连锁反应中追加DOM

时间:2013-07-04 13:45:40

标签: jquery dom append

如何在使用jquery追加dom后再次使用jquery进行dom? 我猜它们不起作用,因为它们是在“$(document).ready();”

之后附加的

例如:

$('.kim2').on('click', function() {
    var ok = $(this).next();
    var ok2 = $(this);
    $('#content').empty().append(ok2, ok);
});

html:

<div class="con">
    <div class="kim2">사고 종류<br />(택일)</div>
    <div id="d" class="kim2b"><div id="d1" class="kim2bb">원동기장치 <br />자전거사고</div>
    <div id="d2" class="kim2bb"><p>자동차 사고</p></div></div>
</div>

现在,我点击'kim2 class',所以'kim2 div'和它的next()'kim2b div'将取代原来的'#content div',但是我不能再使用jquery附加到新的#content div了用旧的替换它们。

2 个答案:

答案 0 :(得分:1)

你在这里发出的是你使用empty()

来自.empty() docs

If you want to remove elements without destroying their data or event
handlers (so they can be re-added later), use .detach() instead.
$('div.kim2bb, div.kim2bc').on('click', // <-- 

您需要使用委托 - 或分离子元素而不是使用空来删除它们

$('#content').on('click','div.kim2bb, div.kim2bc', function(){
        // your code here
});

或更改此

$('#content').on('click', '.kim2', function () {
    var ok = $(this).next();
    var ok2 = $(this);
    $('#content').empty().append(ok2, ok); //<-- you lose the event handlers here using .empty()
});

$('#content').on('click', '.kim2', function () {
    var ok = $(this).next();
    var ok2 = $(this);
    $('#content').children().detach().end().append(ok2, ok);
});

答案 1 :(得分:0)

$('body').on('click', '.kim2', function() {
    var ok = $(this).next();
    var ok2 = $(this);
    $('#content').empty().append(ok2, ok);
});

http://api.jquery.com/on/(参见直接和委派活动部分)