0

ID を使用してスパン要素のテキストにアクセスしようとしています。HTML の一部を次に示します (クリック イベントを使用してオーディオ ファイルをトリガーする英語/タイ語サイトの一部)。

        <p class="link_box"><span class="color_up set1" id="s1e01">I can.. </span>ฉันสามารถ..</p>
        <p class="link_box"><span class="color_up set1" id="s1e02">I cannot (can’t)</span>ฉันไม่สามารถ..</p>

スパン ID "s1e01" を使用して、テキスト "I can.." にアクセスして表示したいと考えています。jsコードは次のとおりです。

var  word1 = "";     
  jQuery("div#word_set").click(function (evnt) {
    if(audioIsPlaying !== true) {
      var elementId = evnt.target.id;
      word1 = jQuery(elementId).text();
      var pathVar = document.getElementById("pathVar").innerHTML;
      var oggVar = pathVar+elementId+".ogg";
      var audioElement = document.createElement("audio");
      ...

コード "jQuery(elementId).text()" は、word1 が "" の初期化された値から変化しないため、値を返していないようです。問題は elementId に集中しているようですが、代わりに何を使用すればよいかわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

0

#jQuery セレクターで要素 ID を使用する場合は、プレフィックスが必要なので、次のようにする必要があります。

word1 = jQuery('#'+elementId).text();

しかし、そもそもなぜ ID を取得するのでしょうか。オブジェクトへの参照は既にあるため、検索する必要はありません。ただ行う:

word1 = jQuery(evnt.target).text();

ハンドラーをより洗練することもできます。

jQuery("#word_set span.set1").click(function() {
    if(audioIsPlaying !== true) {
        word1 = $(this).text();
        ...

ハンドラーを特定のターゲットにバインドすると、this自動的にターゲットに設定されます。これらの要素が動的に追加される場合は、委任を使用できます。

jQuery("#word_set").on("click", "span.set1", function() {
    if(audioIsPlaying !== true) {
        word1 = $(this).text();
        ...
于 2013-08-24T00:50:35.083 に答える