我试图在新闻主题的10篇帖子后发表“更多”。
对于这些新闻主题,有一些功能,你可以点击评论,然后出现你评论而不去另一个页面(AJAX调用)和其他一些这样的。这在前10个帖子中运行良好。
现在,当您点击这10个新闻主题底部的“更多”时,您将获得另外10个新闻主题。这里使用Ajax调用,它在10之后追加。 这也很好。
但是什么行不通(我的问题是那些点击功能我有:
$('.reply').click(function () {
$('#replyWall'+$(this).attr('data-id')).toggle();
document.getElementById('replyMsg'+$(this).attr('data-id')).focus();
});
$('.writeSComment').click(function() {
$(this).hide();
$('#replyToSComment'+$(this).attr('data-id')).toggle();
document.getElementById('commentStatus'+$(this).attr('data-id')).focus();
});
不起作用。也许这是因为附加在网站加载之后,因为你首先点击“更多”,所以它找不到任何有这个id点击这个事件。
但是在附加的内容中,有这些id,以及所有内容,所以有没有办法让这些函数使用附加的东西,或者我该怎么做?
$('.more').live("click",function() {
var ID = $(this).attr("id");
if(ID) {
$("#more"+ID).html('<img src="moreajax.gif" />');
$.ajax({
type: "POST",
url: "misc/moreactivities.php",
data: "lastmsg="+ ID,
cache: false,
success: function(html) {
$("#profileWall").append(html);
$("#more"+ID).remove();
}
});
}
});
答案 0 :(得分:1)
将事件绑定到一组选定元素时,您只会影响DOM中当前存在的元素。这就是您使用.click
执行的操作,.bind('click', function () { ... });
是$('.reply').live('click', function () {
// ...
});
的别名。
要将事件绑定到所有匹配的元素以及与选择器匹配的新创建的元素,您需要使用.live
:
{{1}}
答案 1 :(得分:0)
为什么在jQuery中使用本机JS函数?
document.getElementById('commentStatus'+$(this).attr('data-id')).focus();
此外,如果您创建“在线播放”元素,请使用实时附加活动
$('.writeSComment').click(function() {
到
$('.writeSComment').live("click", function() {
它会影响每个元素,无论是加载dom还是以后都无关紧要。
//对不起,海报编辑时我还在写作