动态生成的目标元素(Jquery)

时间:2014-04-16 14:13:26

标签: javascript jquery ajax dynamic

我目前在页面上有类似的东西(http://jsfiddle.net/my7bM/),只要它是使用php生成的,但是在另一个页面上有相同的功能发生,只在该页面上内容是动态生成的使用Ajax并且脚本不起作用(JS newbie因此最感谢任何帮助)

我已经尝试了这个但是它仍然不起作用

$('.read-more').on("click", function (e) {
    e.preventDefault();
    $(this).closest('.member-content').next('.contentDiv').find('.myContent').show();
    $(this).hide();
    return false;
    );

$('.close-more').on("click", function (e) {
    e.preventDefault();
    $(this).closest('.contentDiv').prev('.member-content').find('.read-more').show();
    $(this).closest('.myContent').hide();
    return false;
});

任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:6)

您需要event delegation来处理动态添加DOM的事件。

  

事件委托允许我们将单个事件监听器附加到父元素,该元素将为匹配选择器的所有子项触发,无论这些子项现在是存在还是将来添加。

试试这个:

 $(document).on("click",'.close-more', function (e) {
  e.preventDefault();
  $(this).closest('.contentDiv').prev('.member-content').find('.read-more').show();
  $(this).closest('.myContent').hide();
  return false;
});

也更喜欢使用最接近的父DOM(保持静态)而不是$(document)