单击附加的html

时间:2013-02-18 08:30:35

标签: javascript jquery html

我有这样的HTML:

<a class="link">text</a>
<div class="items"></div>

(function($) {

  var link = $('.link');
  link.click(function(){
    alert('it works!');
  });

  $('.items').each(function() {
    var items = $(this),
        item = $('<div>something inside</div>');

    items.append(item);
    item.click(link.click());
  });

})(jQuery);

我正在尝试为附加的click绑定item个事件。因此,当我们点击item时,应启动link

但是我从jQuery里面的某处得到了一个错误Uncaught TypeError: Object [object Object] has no method 'apply'

怎么了?

5 个答案:

答案 0 :(得分:3)

动态添加的元素需要event delegation

items.on('click', item, function(){
     link.click();
});

试用小提琴:http://jsfiddle.net/qQLLL/

答案 1 :(得分:1)

也许你应该试试smth。像这样:

function myClick(){
  alert('it works!');
}

$(".link").click(myClick);

$('.items').each(function() {
  var items = $(this),
      item = $('<div>something inside</div>');

  items.append(item);
  item.click(myClick);
});

答案 2 :(得分:1)

尝试事件委派

 items.on('click', item, function(){
    link.click();
 });

如果您想了解有关事件委派的更多信息,请浏览link

答案 3 :(得分:1)

试试这个

(function($) {
    var handleClick = function() {
        alert('it works!');
    };
    $('.link').click(handleClick);
    $('<div>something inside</div>').appendTo('.items').click(handleClick);
})(jQuery);

答案 4 :(得分:0)

你的错误是:

item.click(link.click);

应该是

item.click(function(){ link.click() });