我正在尝试使用jquery选择器获取某些a
元素的文本值,但我似乎遇到了问题。如果我使用.val()我什么也得不到,如果我使用.text(),他们会有额外的返回和空格。
这是我需要的文本值的元素:
<a class="btn dropdown-toggle langLocaleNameSelector"
data-toggle="dropdown">en_US<span class="caret"></span>
</a>
首先,我正在尝试编写一个选择器,它只选择innerText不等于“LangLocale”的元素。
我试着这样做:
var selectors = $('a.langLocaleNameSelector[innerText!="LangLocale"]');
但无论如何它似乎都会把它们拉进去。
然后,如果我尝试从这些选择器调用.text(),我得到类似的东西:
"en_US [return] en_CA [return] "
当我真正想要的是他们的innerTexts数组时,就像这样:
['en_US', 'en_CA']
任何人都可以告诉我A.如何编写正确的选择器以仅获取我想要的选择器,以及B.如何获得该元素后的内部文本?
答案 0 :(得分:4)
你可以试试这个 -
var elems = $('a.langLocaleNameSelector').filter(function () {
return $.trim($(this).text()) !== "LangLocale";
});
获取内部文本数组 -
var arr = $('a.langLocaleNameSelector').filter(function () {
return $.trim($(this).text()) !== "LangLocale";
}).map(function () {
return $.trim($(this).text());
}).get();
演示--->
http://jsfiddle.net/WCp2b/3/
答案 1 :(得分:1)
回车和空白区域有效且正确;它就是元素中的内容 - 你在HTML中有一个回车加上一整堆空白区域。如果你不想要它,你将不得不削减它。
或者您可以关闭<a>
元素末尾的空格,以便</a>
紧跟在内容结尾之后,以便其中没有空格。
<a class="btn dropdown-toggle langLocaleNameSelector"
data-toggle="dropdown">en_US<span class="caret"></span></a>
另一种选择是将<a>
元素的内容的相关部分放入没有任何空格的内部元素中。
EN_US
...然后选择新的内部元素而不是<a>
。
答案 2 :(得分:1)
在POJS中你可以这样做
HTML
<a class="btn dropdown-toggle langLocaleNameSelector" data-toggle="dropdown">en_US<span class="caret"></span></a>
<a class="btn dropdown-toggle langLocaleNameSelector" data-toggle="dropdown">LangLocale<span class="caret"></span></a>
<a class="btn dropdown-toggle langLocaleNameSelector" data-toggle="dropdown">en_UK<span class="caret"></span></a>
<a class="btn dropdown-toggle langLocaleNameSelector" data-toggle="dropdown">en_CA<span class="caret"></span></a>
的Javascript
var arrayOfTexts = Array.prototype.reduce.call(document.getElementsByClassName("langLocaleNameSelector"), function (array, langLocaleNameSelector) {
var text = langLocaleNameSelector.childNodes[0].nodeValue;
if (text !== "LangLocale") {
array.push(text);
}
return array;
}, []);
console.log(arrayOfTexts);
输出
["en_US", "en_UK", "en_CA"]
上
在jquery语法中可以是
的Javascript
var arrayOfTexts = $(".langLocaleNameSelector").filter(function () {
return this.childNodes[0].nodeValue !== "LangLocale";
}).map(function () {
return this.childNodes[0].nodeValue;
}).toArray();
console.log(arrayOfTexts);
输出
["en_US", "en_UK", "en_CA"]
上