这是工作流程:
根据上面的流程,我无法获得新的元素事件,因为它永远不会被触发。这是我的情景:
这个想法是当你点击“元素”时,它的ID属性应该打印在.log div
中编辑:
我测试了所有答案,所有这些答案都很好:)
答案 0 :(得分:3)
你有$(".element").showID();
点击处理程序之外的.create
所以没有什么可以选择的,你也可以在onLoad中使用你的代码,而它应该是无包装的。
答案 1 :(得分:1)
您可以使用事件委派
$(document).ready(function(){
$(".create").click(function(){
$(".container").append('<div id="4" href="#" class="element">element</div>');
});
});
$(document).on('click','.element', function(){
$(".log").html("id: " + $(this).attr("id"));
});
答案 2 :(得分:0)
在jsFiddle中,代码会自动放入$(document).ready
块中。所以,正在发生的事情是你的$(document).ready
立即被运行。这意味着它在设置 jQuery.fn.showID
之前运行。
此外,$(".element").showID();
将事件绑定到当时存在的.element
。新元素不会绑定事件。您需要使用事件委托(这会使showID
插件无用),或者在添加元素后调用showID
(确保不重新绑定到旧元素)。
P.S。在jQuery插件this
内部已经是一个jQuery对象,不需要使用$(this)
。