帮助jQuery Delegate

时间:2010-09-16 20:52:07

标签: jquery ajax

我试图使用.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>

基本上新内容会添加到此列表的开头,并且在此列表的末尾,存档内容会在用户滚动时添加。

我在页面的其他部分使用委托,但它可以工作但不是这部分。

任何帮助表示赞赏!

3 个答案:

答案 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标记? :)