2013-02-06 17 views
10

は私が使用jQueryのは、対象

event.target 
を記録し、コンソール場合は、この

$('ul').click(function() { 
theEl=(event.target.text); 
}); 

のようなコードを順不同リスト

<ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
</ul> 

からのイベントのターゲット要素のテキストを取得しようとするのテキストを取得します

返信

<li>Item 1</li> 

event.target.text私はちょうど 'アイテム1' をしたい

を未定義

戻ります。私は前に私はこれを行っている知っている - それは後半でなければなりません...どのような援助に感謝を:)

答えて

18

使用jQueryのテキスト機能:

$(event.target).text() 
7

あなたは生のJSとjQueryを混乱しています。 jQueryので

、あなたが$(event.target).text()

を使用すると思いますが、それはJavaScriptではるかに効率的です:event.target.firstChild.nodeValue

編集:ここでは証拠としてJSPerfです。

+0

良いJSPerf - JSの方が早い!ジェフの答えが正しいと答えたb/c。彼が最初に答えてくれましたが、詳細に感謝します。 –

2

event.target.textが未定義の理由は、HTMLElementにそのメソッドまたはプロパティが定義されていないためです。しかし、jQueryはあなたが探していたものであるtext()を持っています。 jQueryのメソッドまたはプロパティにアクセスするには、現在のHTMLElementをjqueryオブジェクトにラップする必要があります。これは、関数オブジェクトをjQueryに渡し、APIを公開するjQueryプロトタイプを渡すことによって行われます。

jQuery(element);//in general 
$(event.target).text();//for your situation 
0
event.target.textContent 

それはあまりにもjavascriptのアクセスです。 Ctrl+Shift+Jで「Chrome」(またはFirefox)のjavascriptコンソールを実行することをお勧めします。あなたのコードを書きなさい:console.log(event)そしてコンソールでそれを見てください。オブジェクトのすべての属性を見ることができます。

関連する問題