不能让jQuery(html,props)与事件一起工作

时间:2012-08-29 21:50:50

标签: jquery

我无法让click事件适用于这样创建的元素。

http://jsfiddle.net/iambriansreed/PEZXa/

的jQuery

$('<a href="#">a</a>', {
  click: function(){
    alert('a clicked');
  }
}).appendTo("div");

$('<span>span</span>', {
  click: function(){
    alert('span clicked');
  }
}).appendTo("div");

请不要向我展示将onclick事件添加到元素的50种不同方法我想知道为什么这个特定方法有效或无效。

来自文档: http://api.jquery.com/jQuery/#jQuery2

4 个答案:

答案 0 :(得分:6)

$('<a />', {
    href: '#',
    text: 'a',
  'click': function(){
    alert('a clicked');
  }
}).appendTo("div");

$('<span />', {
    text: 'span',
  'click': function(){
    alert('span clicked');
  }
}).appendTo("div");

http://jsfiddle.net/PEZXa/56/

来自文档

  

html - 定义单个独立HTML元素的字符串(例如&lt; div /&gt;或&lt; div&gt;&lt; / div&gt;)。

答案 1 :(得分:5)

当像这样创建的元素包含文本节点或属性时,jQuery似乎不喜欢它。实质上,您提供的HTML代码应该是单个(可能是自动关闭)标记。

这可能是因为您使用的语法要求在object参数中定义属性,而不是在HTML和对象之间混合。

无论如何,这段代码对我有用:

$('<a /> ', {
    href: '#',
    text: 'a',
    click: function() {
        alert('a clicked');
    }
}).appendTo("div");

$('<span />', {
    text: 'span',
    click: function() {
        alert('span clicked');
    }
}).appendTo("div");​

演示:http://jsfiddle.net/PEZXa/60/

答案 2 :(得分:4)

这应该有效:

$('<a/>', {
    href: "#",
    text: 'a',
    click: function(){
        alert('a clicked');
    }
}).appendTo("div");

FIddle

答案 3 :(得分:3)

仅当jQuery(html, props)是一个没有其他属性或子元素的裸标记时,

html才有效。