JavaScript获取每个单词的事件

0tdrvxhp  于 2023-01-16  发布在  Java
关注(0)|答案(2)|浏览(115)

通常JavaScript绑定DOM元素上的事件。但是我想知道用户点击了哪个单词。我熟悉的方法是像这样把每个单词都 Package 起来:

<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>.

我认为这是一个冗余的代码,有没有可能使代码更简洁?

rhfm7lfc

rhfm7lfc1#

当然,您也可以编写一个JavaScript函数来 Package 每个单词:

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; 
}

当然,这是假设元素中没有其他html,你可以合并马蒂的建议使代码更简洁。

rslzwgfq

rslzwgfq2#

要以任何可行的方式实现这一点,您可能仍然需要像现在这样将每个单词 Package 在一个单独的元素中,但您至少可以摆脱所有内联JavaScript。
将even监听器添加到words的父元素中,word元素接收到的任何事件都将冒泡到父元素中,您可以查看event target属性来找出单击了哪个单词。
您使用的是JS库还是没有JS库?
编辑:由于您没有使用库,jQuery是一个流行的选择(流行到足以被认为是SO的陈词滥调,我想这说明了一些问题)。
http://jsfiddle.net/eKvdn/(单击单词)
不过,在使用它之前多读一些关于它的资料将是一个非常好的主意。

相关问题