jquery - 这个 jQuery 选择器到底是如何工作的?

标签 jquery dom

我正在编写一个简单的工具提示:

$(function() {

$('a').hover(function() {
    var curLink = $(this);
    var toolTipText = curLink.attr('title');
    if (toolTipText)
    {
        var theOffset = curLink.offset();

        $('body').prepend('<div id="toolTip">'+toolTipText+'</div>');           

        // how the heck is this working???
        $('#toolTip').css({
            'left' : theOffset.left+'px',
            'top' : theOffset.top - 30+'px'
        });     
    }   
}, function() {
    $('#toolTip').remove(); 
});

});

正如您所看到的,当用户将鼠标悬停在链接上时,ID 为“toolTip”的 div 会动态添加到 DOM 中。当 DOM 加载时,该 div 最初并不存在,但稍后会添加。所以我假设我必须使用 live() 函数并向其附加一个事件。但如果我只是将其视为常规选择器,它会如何工作。并不是我在提示,而是这是如何运作的?

最佳答案

您不需要 live,因为该选择器在元素进入 DOM 之前不会运行。

  • OnMouseOver 工具提示已添加到 DOM 中。
  • 鼠标移开时,选择器将运行,工具提示将从 DOM 中删除。它工作得很好,因为当调用 mouseout 函数时,工具提示已经通过鼠标悬停添加到了 DOM 中。

您只需要使用 'live()'如果您<a>当您附加事件时,元素尚未在 DOM 中。 IE。代码执行后添加到页面的任何 anchor 都不会有工具提示。

关于jquery - 这个 jQuery 选择器到底是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7073085/

相关文章:

javascript - 动态添加的js对象改变值

javascript - 如何从 React 中 render 方法之外的函数渲染组件?

html - 如何在 C 中使用 tidylib 获取 html 表的行?

javascript - JQuery 不适用于插入/注入(inject) DOM 元素

jquery - 在jquery动画中指定不同的延迟/持续时间?

jquery - 调整浏览器(谷歌浏览器)大小时 CSS Float 的奇怪行为?

jquery - 在触摸设备上禁用 jQuery 滚动条插件?

javascript - 修改 DOM 后如何确保 DOM 再次准备就绪

c# - 使用 IE 插件浏览器帮助程序对象 (BHO) 访问 Frame 或 Iframe 中的数据

javascript - 偶数/非偶数列表项中断功能