我试图使用.delegate将点击事件分配给动态加载的内容。滚动时,其他内容将通过Ajax加载。
以下是我编写的jQuery,它适用于静态内容,但不适用于动态加载的内容:
$('#fav').delegate("#submit", "click", function() {
var favid = $("input#favid").val();
var favsave = 'favid=' + favid;
$.ajax({
type: "POST",
url: "fav.php",
data: favsave,
success: function() {
$('#fav').fadeOut(100);
}
});
return false;
});
这是我的HTML:
按钮
http://a2.twimg.com/profile_images/499579722/Lambda_twitterPic_normal.gif'alt='lambdasolutions' title ='lambdasolutions'/> http://twitter.com/lambdasolutions'alt ='lambdasolutions'title ='lambdasolutions'> lambdasolutions
<div class='atweet'>Why Use Moodle? |
<a target='_blank' href="http://bit.ly/aLld9q">http://bit.ly/aLld9q</a> | <a target="_blank" href="http://search.twitter.com/search?q=%23moodle">#moodle</a>
<a target="_blank" href="http://search.twitter.com/search?q=%23elearning">#elearning</a>
<a target="_blank" href="http://search.twitter.com/search?q=%23edtech">#edtech</a>
</div>
<div class='date'>16-09-2010 22:44</div>
<form id='fav' method='post' class='options' action=''>
<input style='display: none;' type='text' name='fav' id='favid' value='24699868222' />
<input type='submit' value='Add to Favorites' name='submit' id='submit' />
</form>
</li>
基本上新内容会添加到此列表的开头,并且在此列表的末尾,存档内容会在用户滚动时添加。
我在页面的其他部分使用委托,但它可以工作但不是这部分。
任何帮助表示赞赏!
答案 0 :(得分:1)
我的第一个猜测是,这是因为您尝试添加多个#submit
元素。元素ID是唯一的,不应多次使用。我建议切换到submit
课程并再次尝试...
$('#fav').delegate(".submit", "click", function() {
您还应该切换#favid的使用情况。
答案 1 :(得分:0)
静态加载的#fav div包装所有#submits,还是只包含一个?我认为问题是你将它委托给dom上不够高的对象。尝试用body或一些包装元素替换#fav。
另外,如上所述,您不应在给定页面上多次使用ID,因此最好使用.submit类。
$('body').delegate(".submit", "click", function() {
var favid = $("input#favid").val();
var favsave = 'favid=' + favid;
$.ajax({
type: "POST",
url: "fav.php",
data: favsave,
success: function() {
$('#fav').fadeOut(100);
}
});
return false;
});
您可能还需要为这些jquery选择器添加一些上下文。
答案 2 :(得分:0)
页面的哪一部分是动态生成的?如果动态生成ID为#fav的元素,那么它将无法工作。您需要将事件处理程序委托给绑定事件时页面上存在的元素。
更多信息,最好是有问题的HTML标记? :)