2011-05-07 6 views
3

通常、JavaScriptはDOM要素のイベントをバインドします。しかし、私はユーザーがどの単語をクリックしたかを知りたい。ちょうどここのように、すべての単語をラップされた私にとってはお馴染みの道:すべての単語にJavaScriptイベントが発生します

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

私はそれは冗長なコードだし、それは、コードをより簡潔にすることができると思いますか?ありがとう

答えて

4

実行可能な方法でこれを行うには、おそらくあなたはやっているように別の要素に各単語をラップする必要がありますが、少なくともすべてのインラインJavaScriptを取り除くことができます。

偶数リスナーを単語の親要素に追加します。単語要素が受け取るすべてのイベントは親要素にバブリングされ、イベントターゲットプロパティを参照すると、クリックされた単語を見つけることができます。

あなたはJSライブラリを使用していますか、まったく働いていませんか?

編集:ライブラリーを使用していないので、jQueryが人気のある選択肢(人気があるので、人気があります。ここでは、あなたはjQueryを使ってそれを行うだろう方法は次のとおりです。

http://jsfiddle.net/eKvdn/(単語をクリックしてください)

しかし、それを使用する前に、それについての詳細を読むために非常に良いでしょう。

+0

この問題でどのJSライブラリが役に立ちますかわかりません。もし誰かがこの問題を解決するために図書館を見つけたら、私は感謝します。 – megas

6

さて、あなたは常にあなたのためのすべての単語をラップするために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; 
} 

、これは、要素がそれではない他のHTMLを持っていることを前提としています。これをMattiの提案と組み合わせることで、コードをもっと綺麗にすることができます。