得到单词点击段落
我有一个HTML文档,其中包含大约30,000个单词。
我希望能够在用户点击任何单词时执行某些操作。 为了简单/概念,我只想alert()
那个词。
例如,在段落中,如果我点击“有”它应该运行alert("have")
。
我正在使用jQuery。
var p = $('p'); p .html(function(index, oldHtml) { return oldHtml.replace(/\b(\w+?)\b/g, '$1') }) .click(function(event) { alert(event.target.innerHTML) });
我考虑了巴勃罗·费尔南德斯的建议。
在jsFiddle上看到它 。
更新
那么,这是否具有高效性(例如,它不会冻结慢用户的浏览器?)另外,你能详细说明event.target是如何工作的吗?
它可能会很好地减慢30,000字的页面性能。 我认为这是过度的,可能会受益于分页,但我不知道你的具体情况。
event.target
属性保存启动事件的元素 – 事件冒泡/传播到其父级,然后父级处理事件,因此您在单独的span
元素上没有30,000个事件。
不幸的是,我认为你需要处理文本并在每个单词周围添加 YOUR_WORD
。
然后:
$(".clickableWord").click( function(this){alert(this.text());} );
尝试使用绝对定位来定位单词的任何方法都容易出现缩放,字体大小等问题。
这里已经解决了在HTML元素中单击位置获取文本
HTML doc是静态还是您正在生成它? 如果你正在生成它,那么在每个单词周围添加这些标签应该太难了。
如果您需要在事实之后对现有HTML执行此操作,那么这有点困难。 选择包含大多数单词的元素(可能是div或p)并将这些单词读入数组。 然后重新输出它们,然后是那些span标签
我看到的派对有点晚了。
试一试。
init() function init() { addListeners(); adjustText(document.getElementById("text")); } function addListeners() { document.body.onclick = clicked; } function adjustText(holder) { text = holder.innerHTML.split(" "); holder.innerHTML = ""; for(var i=0;i
我没有通过代码来发布它是如何完成的,但实际上这是在这里完成的,没有在句子中插入任何额外的span
或其他元素。