更新:所有贡献的人,非常感谢,你们都非常善良和慷慨,你们所有人都值得尊敬。欢呼声。
注意:我正在制作一个简单的jQuery工具提示插件,工具提示将在鼠标悬停时触发。鼠标悬停将创建div工具提示的实例,该实例将特定于启动div工具提示的每个锚点。因此,具有类.c_tool的每个锚将具有其自己创建的div,其将在mouseout之后擦除。无论如何,所有这些细节都无关紧要。重要的是如何使用.append()或.add()创建一个div,然后找到一种方法来调用它并将操作应用于该div而无需设置标识符(id),类或任何方法来识别它
我知道有一种方法你可以通过计算找到div,所以如果你给每个创建的div都是同一个类然后计算它们来找到那个,但我不知道这是否是最有效的方法为什么我要求帮助。
我不打算发布不必要的整个插件脚本,所以我会粘贴一个简化版本。
<a href="#" class="c_tool">hover me</a> <a href="#" class="c_tool">hover me</a> $(document).ready(function() { obj = $('a.c_tool'); obj.mouseover(function() { /// append div to body it will be specific to each item with class c_tool, however I don't want to set an ID, or CLASS to the appended div }).mouseout(function() { /// remove added div without setting ID or class to it. }); });
答案 0 :(得分:3)
工作示例:
$(document).ready(function() {
var tooltip;
obj = $('a.c_tool');
obj.mouseover(function() {
var element = $('<div>', {
html: "I'm a tooltip"
});
tooltip = element.appendTo($("body"));
/// append div to body it will be specific to each item with class c_tool, however I don't want to set an ID, or CLASS to the appended div
}).mouseout(function() {
tooltip.remove();
/// remove added div without setting ID or class to it.
});
});
答案 1 :(得分:2)
要创建新的DOM节点,您可以使用jQuery构造函数,例如
$(document).ready(function() {
obj = $('a.c_tool');
obj.mouseover(function() {
if(!$.data(this, 'ref')) {
$.data(this, 'ref', $ref = $('<div>', {
html: 'Hello World!'
}).appendTo(document.body));
}
}).mouseout(function() {
$.data(this, 'ref').remove();
});
});
.appendTo()
将调用的DOM节点(在本例中为新创建的DIV)作为jQuery对象返回。这样,您可以将引用存储在变量中,稍后再访问它。
参考您的评论:
要删除所有存储的引用,您应该这样做:
$('a.c_tool').each(function(index, node) {
$.removeData(node, 'ref');
});
答案 2 :(得分:0)
you can use $.append(
);
并找到动态创建的DOM,可以使用
$("#dynamicallyCreatedDOMid").live("yourCustomTrigger",function(){
});