【问题标题】:jQuery plugin for highlighting words blocks on click event用于在单击事件上突出显示单词块的 jQuery 插件
【发布时间】:2014-10-03 02:47:13
【问题描述】:

我正在使用来自该站点 link 的 jquery 荧光笔。您可以选择文本,荧光笔会将其包裹在<span> example

我在文本的突出显示部分注册点击事件时遇到问题。我已经阅读了关于动态添加的元素,您必须使用 .on() 函数,但我无法使其工作。

这是jsfiddle 我的代码在javascript 的底部。我认为荧光笔中有一些东西会阻止点击事件,但我的 javascript 技能不足以弄清楚是什么。

这就是我尝试注册点击事件的方式

$(document).ready(function() {
    $('#sandbox').textHighlighter();

    $('#sandbox').on('click', 'span.highlighted', function(){
        alert("Click was registered");
    });
});

【问题讨论】:

  • 请在此处发布您的相关代码,以便为将来的访问者保留它。

标签: javascript jquery html highlighting


【解决方案1】:

两件事 - 您使用的早期版本的 jQuery (1.6.4) 不支持 on()(您可以使用 delegate())并且您的语法需要稍微调整 -

$(document).on('click', 'span.highlighted', function(){
    console.log("Click was registered");
});

应该对 jQuery 最初运行时页面上存在的元素进行委托。在这种情况下,事件将冒泡到“文档”,它在代码运行时安全存在。选择器也可以是“#sandbox”。

另外一点,请始终使用console.log() 进行故障排除,而不是alert()

Working Example

【讨论】:

    【解决方案2】:

    .live 用于动态创建的元素

    演示http://jsfiddle.net/1pwq822r/2/

    $('#sandbox').live('click', 'span.highlighted', function () {
            alert("Click was registered");
    });
    

    【讨论】:

    • 使用.live() 代替.on() 有什么好处吗?
    • live() 适用于 1.7 之前的 jQuery 版本。它在 1.9 版中被完全删除
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    相关资源
    最近更新 更多