0

次のhtmlコードがあり、それぞれのimgタグをクリックしているときにimgタグのすぐ近くにあるテキストを選択しようとしています。

たとえば、最初の<p>タグで「Politics」を取得する必要があります。

 <p>Environmental<img src="/img/bookmark.png" class="bookmark" id="bm1" data-username="usernames" data-userid="un123"> Politics</p>

 <p>Science<img src="/img/bookmark.png" class="bookmark" id="bm2" data-username="usernames" data-userid="un123"> Explore</p>

 <p>Contextual<img src="/img/bookmark.png" class="bookmark" id="bm3" data-username="usernames" data-userid="un123"> Learning</p>

次の jQuery 関数を使用しましたが、何も役に立ちませんでした。

$("img.bookmark").click(function(){
   console.log($(this).next());
});
4

3 に答える 3

5

nextjQuery 関数は次の要素取得します。テキストノードが必要です。これを取得するには、通常の DOM トラバーサル メソッドを使用する必要がありnextSiblingます。プロパティが必要です。

$("img.bookmark").click(function(){
   console.log(this.nextSibling);
});

おそらく、実際にはその文字列値が必要であり、次のように使用できますnodeValue

$("img.bookmark").click(function(){
   console.log(this.nextSibling.nodeValue);
});
于 2013-11-13T10:55:29.137 に答える
2

あなたはこう言いましたFor example in the first <p> tag I should get "Politics",

あなたはそれを得ることができます.nextSibling.nodeValue

$("img.bookmark").click(function(){
   console.log(this.nextSibling.nodeValue);
});

デモフィドル

于 2013-11-13T10:58:32.893 に答える
1
*nextSibling.data* will give you the text (in your case Politics/../..)


$("img.bookmark").click(function(){
   alert(this.nextSibling.data);
});
于 2013-11-13T11:28:36.867 に答える