JavaScript在每个单词上获取事件

JavaScript在每个单词上获取事件,javascript,javascript-events,Javascript,Javascript Events,通常JavaScript绑定DOM元素上的事件。但我想知道用户点击了哪个词。对我来说,最熟悉的方式就是像这样把每一个字都包装起来: <a href="javascript:onClick()">And</a> <a href="javascript:onClick()">now</a> <a href="javascript:onClick()">the</a> <a href="javascript:onClick(

通常JavaScript绑定DOM元素上的事件。但我想知道用户点击了哪个词。对我来说,最熟悉的方式就是像这样把每一个字都包装起来:

<a href="javascript:onClick()">And</a> <a href="javascript:onClick()">now</a> <a href="javascript:onClick()">the</a>
<a href="javascript:onClick()">kung</a> <a href="javascript:onClick()">pao</a> <a href="javascript:onClick()">chicken</a>.

.

我认为这是一个冗余代码,有可能使代码更简洁吗?要以任何可行的方式实现这一点,您可能仍然需要像现在这样将每个单词包装在单独的元素中,但至少可以去掉所有内联JavaScript

将偶数侦听器添加到单词的父元素。word元素接收到的任何事件都将冒泡到父元素,您可以查看event target属性以找出单击了哪个词

您使用的是JS库还是没有JS库

编辑:因为你没有使用图书馆,这是一个流行的选择(流行到足以被认为是陈词滥调,所以,我想这说明了一些事情)。下面是使用jQuery的方法:

(点击单词)


不过,在使用之前阅读更多关于它的内容将是一个非常好的主意。

好吧,您可以编写一个JavaScript函数来包装每个单词:

function wrapWords(element) {
    var html = element.innerHTML;
    var words = html.split(/ /);
    var newHtml = '';

    for (var i = 0; i < words.length; i++) {
        newHtml += '<span>' + words[i] + '</span> ';
    }

    element.innerHTML = newHtml; 
}
函数包装词(元素){
var html=element.innerHTML;
var words=html.split(//);
var newHtml='';
for(var i=0;i

当然,这假设元素中没有其他html。您可以将此与Matti的建议结合起来,使代码更加整洁。

我不知道哪个JS库可以在这个问题上帮助我。如果有人能找到图书馆来解决这个问题,我将不胜感激。