類似的問題已被問到,但不夠相似!JQuery:選擇封閉標籤之間的文本
鑑於這種結構:
<p class="text"> <b>1</b>this is point one<b>2</b>this is point two<b>3</b> </p>
我怎麼會選擇關閉標籤之間的文本?即「這是第一點」。
內容通過JSON調用反饋,所以我不能用他們給我的結構做很多事情。
謝謝!
類似的問題已被問到,但不夠相似!JQuery:選擇封閉標籤之間的文本
鑑於這種結構:
<p class="text"> <b>1</b>this is point one<b>2</b>this is point two<b>3</b> </p>
我怎麼會選擇關閉標籤之間的文本?即「這是第一點」。
內容通過JSON調用反饋,所以我不能用他們給我的結構做很多事情。
謝謝!
可以取代你<b>#</b>
的東西更容易拆就那麼遍歷結果
jQuery的:
var points = $('.text').html().replace(/<b>.<\/b>/g, ',').split(','),
$results = $('#results');
for (var i in points) {
if ($.trim(points[i]).length > 0) {
$results.html($results.html() + points[i] + "<br />");
}
}
儘管@ Shawn-Chin也有一個很好的解決方案,但我最終還是使用了這個解決方案。這對我來說更好。 – MadTurki
您可以使用.contents()獲取該值。你的情況,這會工作:
alert($(".text").contents().eq(2).text())
你可以嘗試 - How do I select text nodes with jQuery? -
console.log($('p').contents().filter(function() {
return this.nodeType == Node.TEXT_NODE;
}));
這是取自。正如鏈接問題所述,該解決方案不適用於IE7,但在鏈接問題中有詳細的解決方法。
工作演示 - http://jsfiddle.net/E53HU/1/
這裏有一個潛在的解決方案:
var nodes = $('p.text')[0].childNodes;
var results = [];
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].nodeType == Node.TEXT_NODE) {
// support older browsers that do not have textContent
var text = nodes[i].textContent || nodes[i].innerText;
if ($.trim(text).length > 0) { // optional - push non-empty strings
results.push(text);
}
}
}
//console.log(results);
如果你需要一些文本節點的訪問,您可以使用提取所有到一個數組:
var data = $(".text").contents().filter(function() {
return this.nodeType == Node.TEXT_NODE && !this.nodeValue.match(/^\s*$/);
}).toArray();
您現在可以訪問「這是第一點一個」使用data[0].nodeValue
和「這是第二點」,使用data[1].nodeValue
。
工作小提琴:http://jsfiddle.net/jHhFS/
注:附加條件(!this.nodeValue.match(/^\s*$/)
)過濾掉僅包含空格的文本節點。
「這是第二點」怎麼樣? – BalusC
@BalusC - 我也想得到:P我很確定這個方法對於任何一個都是一樣的。 – MadTurki