我刚遇到了一个jQuery的问题。我没有找到已经发布的解决方案,如果有的话,我很抱歉我的错误。
我有这个DOM:
<div class='usersList list'>
<div id='7' class='sidebarElement'> <span>user</span></div>
<div id='21' class='sidebarElement'><span>user</span></div>
<div id='12' class='sidebarElement'><span>user</span></div>
<div id='15' class='sidebarElement'><span>user</span></div>
<div id='17' class='sidebarElement'><span>user</span></div>
<div id='13' class='sidebarElement'><span>user</span></div>
<div id='5' class='sidebarElement'> <span>user</span></div>
<div id='3' class='sidebarElement'> <span>user</span></div>
<div id='4' class='sidebarElement'> <span>user</span></div>
<div id='19' class='sidebarElement'><span>user</span></div>
<div id='2' class='sidebarElement'> <span>user</span></div>
<div id='6' class='sidebarElement'> <span>user</span></div>
<div id='18' class='sidebarElement'><span>user</span></div>
<div id='16' class='sidebarElement'><span>user</span></div>
<div id='14' class='sidebarElement'><span>user</span></div>
</div>
这段代码通过AJAX从另一个文件中加载。我遇到的问题如下。这是我的JS代码:
$(document).ready(function () {
function reloadUsers(query) {
$.ajax({
url: 'getLoginUsersAjax.php',
type: 'GET',
data: {query: query},
success: function (data) {
$('.usersCardAjaxContainer').empty().html(data);
}
});
}
$(".sidebarElement span").click(function() {
console.log($(this).parent().attr("id"));
})
reloadUsers("");
});
这不起作用,我认为是因为元素是通过AJAX加载的,当解析或其他操作click
时,它们还不存在,我不知道jQuery内部如何工作。我的解决方法是将点击事件放入ajax的success
分支中,像这样:
success: function (data) {
$('.usersCardAjaxContainer').empty().html(data);
$(".sidebarElement span").click(function() {
console.log($(this).parent().attr("id"));
})
}
这个方法可以运行,但是我认为它不太对。我已经寻找其他可以实现这个功能的函数或方法,但是我只发现了live
,但是自jQuery 1.7以来就已经被弃用了。是否还有其他可以使用的方法,或者我必须坚持使用这个解决方法?