jQuery方法动态地。将div替换为dom,然后在不设置ID,类或者无论如何都能识别它的情况下找到它

时间:2011-01-25 08:13:31

标签: javascript jquery xhtml

更新:所有贡献的人,非常感谢,你们都非常善良和慷慨,你们所有人都值得尊敬。欢呼声。

注意:我正在制作一个简单的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.
    });

});

3 个答案:

答案 0 :(得分:3)

工作示例:

http://jsfiddle.net/xzL6F/

$(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(


);

http://api.jquery.com/append/

并找到动态创建的DOM,可以使用

$("#dynamicallyCreatedDOMid").live("yourCustomTrigger",function(){


});

http://api.jquery.com/live/