Как получить текст родительского элемента с помощью jQuery?
У меня есть div, который содержит гиперссылку delete, onlick из нее, я хочу текст тега div. Как это возможно в jQuery?!
<div>sometext<a href="#">delete</a></div>
Я хочу получить текст тега div "sometext"и, если возможно, идентификатор этого div. Есть идеи?!
6 ответов
проблема с:
$(this).parent().text();
заключается в том, что он получит весь текст в div (sometext и delete).
Я предполагаю, что вам нужен только текст в div, а не ссылка.
Я придумал пример на jsFiddle:
В идеале вы можете обернуть текст в промежуток, например:
<div id="div1"><span>sometext</span><a href="#">delete</a></div>
тогда ваш JavaScript будет быть:
$("a").click(function(e){
$div = $(this).parent("div");
id = $div.attr("id");
text = $div.find("span").text();
alert( text );
e.preventDefault();
});
редактировать
как утверждает @DarthJDG, если вы не хотите изменять свою разметку, любые из них также будут работать:
text = $div.get(0).childNodes[0].nodeValue;
//OR
text = $div[0].childNodes[0].nodeValue;
//OR
text = $div.get(0).firstChild.nodeValue;
//OR
text = $div[0].firstChild.nodeValue;
//OR
//Gets the first text node
$div.contents().filter(function() {
return this.nodeType == Node.TEXT_NODE;
}).text();
var content;
$(this).parent().contents().filter(function() {
return this.nodeType == 3;
}).each(
function(i,el){
content = content + $(el).text();
}
);
устанавливает содержание стоимости прямых детей, которые текст.
$('a').click(function() {
var id = $(this).parent('div').attr('id');
var html = $(this).parent('div').html().replace(/<.*>/g, "");
alert(html);
});
хотя добавление тега span, вероятно, будет более эффективным
$("a").click(function(){
var text = $(this).parent().clone() //clone the element
.children() //select all the children
.remove() //remove all the children
.end() //again go back to selected element
.text();
alert(text);
});
mySiblingtext="";
myParentId = "";
$('a').click(function(){
var mypart = $(this)[0].previousSibling;
mySiblingtext= $(mypart).text();
myParentId = $(this).parent().attr('id');
alert(mySiblingText+myParentId);
});
jQuery пропускает текстовые узлы для всех своих методов обхода (кроме .оглавление.) )( Для доступа к предыдущему брату, а затем текст в этом случае, независимо от nodeType, вы можете получить доступ к узлу DOM, а затем использовать .previousSibling property. Затем вы можете получить доступ к тексту этого элемента.
доступ к идентификатору, если родитель также прост.
пример скрипки страница:http://jsfiddle.net/MarkSchultheiss/FuQ6g/
Примечание: один преимущество этого метода заключается в том, что у вас есть разметка:
<div id='aparent'>sometext<a href="#">delete</a>stuff after</div>
текст" материал после " не выбран.