0

在使用 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 />자전거사고&lt;/div>
    <div id="d2" class="kim2bb"><p>자동차 사고</p></div></div>
</div>

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

4

2 回答 2

1

你的问题是在这里你使用 empty()

来自.empty()文档

如果您想删除元素而不破坏其数据或事件
处理程序(以便以后可以重新添加),请改用 .detach() 。
$('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);
});
于 2013-07-04T14:31:15.810 回答
0
$('body').on('click', '.kim2', function() {
    var ok = $(this).next();
    var ok2 = $(this);
    $('#content').empty().append(ok2, ok);
});

http://api.jquery.com/on/(参见直接和委托事件部分)

于 2013-07-04T13:48:55.233 回答