У меня есть следующий HTML-код и вы пытаетесь выбрать текст, который находится непосредственно в теге img, при нажатии соответствующего тега img.
Например, в первом <p>
я должен получить " Политика ",
<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());
});
Вы заявили об этом. For example in the first <p> tag я should get "Politics",
Вы можете получить его с помощью .nextSibling.nodeValue
:
$("img.bookmark").click(function(){
console.log(this.nextSibling.nodeValue);
});
nodeValue
. Приятно иметь ответы на оба вопроса сейчас! (хорошо, одинокий день улучшил свой ответ, теперь один включает оба)
For example in the first <p> tag I should get "Politics",
я думаю, это то, что я пытался показать.
next
функция jQuery получает следующий элемент. Вам нужен текстовый узел. Для этого вам необходимо использовать обычные методы обхода DOM: вам нужно свойство nextSibling
.
$("img.bookmark").click(function(){
console.log(this.nextSibling);
});
Вероятно, вы действительно хотите его строковое значение, для которого вы можете использовать nodeValue
:
$("img.bookmark").click(function(){
console.log(this.nextSibling.nodeValue);
});
*nextSibling.data* will give you the text (in your case Politics/../..)
$("img.bookmark").click(function(){
alert(this.nextSibling.data);
});