Вы можете попробовать это.
$("#one").live("click",function(){
//It will filter parent li's content to get only text node and get its text
var partxt = $(this).parent().parent().contents().filter(function(){
//return true only if text node
return this.nodeType == 3;
}).text();
alert(partxt);
});
Работа демо - http://jsfiddle.net/TpdfA/
Side Примечание:
Если вы используете jQuyer версии 1.7+, то это adviceable использовать on
иначе вы можете использовать делегат вместо live
.
Использование delegate()
//Instead of document you can specify any parent container of dynamic elements
$(document).delegate("#one", "click",function(){
//It will filter parent li's content to get only text node and get its text
var partxt = $(this).parent().parent().contents().filter(function(){
//return true only if text node
return this.nodeType == 3;
}).text();
alert(partxt);
});
Используя on()
(JQuery версии 1.7+)
//Instead of document you can specify any parent container of dynamic elements
$(document).on("click", "#one",function(){
//It will filter parent li's content to get only text node and get its text
var partxt = $(this).parent().parent().contents().filter(function(){
//return true only if text node
return this.nodeType == 3;
}).text();
alert(partxt);
});
Ссылки:
возможно дубликат [Как получить текст ссылки, которая имеет детей?] (Http://stackoverflow.com/questions/9450453/how-to-get-the-text -of-a-link-which-have-children) и [потенциально другие] (http://stackoverflow.com/search?q=jquery+get+text+excluding+children&submit=search). –
Я думаю, что это не дублируется, потому что несколько тегов li сделали его настолько сложным. – Huseyin
Я думаю, что это так. Два ответа здесь предлагают то же решение, что и принятый ответ в другом вопросе.Ответ не зависит от какой-либо структуры: клонировать узел, удалять все дочерние узлы элемента и извлекать оставшийся текст. Как * получить * элемент, из которого вы хотите получить текст, - это другая проблема, которую вы уже, казалось, решили. –