1

我正在尝试a使用 jquery 选择器获取某些元素的文本值,但我似乎遇到了问题。如果我使用 .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]            "

当我真正想要的是他们的内部文本数组时,如下所示:

['en_US', 'en_CA']

谁能告诉我 A. 如何编写正确的选择器以仅获取我想要的选择器,以及 B. 一旦我拥有它,如何从该元素中获取 innerText?

4

3 回答 3

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/

于 2013-06-16T19:37:13.947 回答
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"] 

jsfiddle 上

在 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"] 

jsfiddle 上

于 2013-06-16T20:23:05.800 回答
1

回车和空格有效且正确;这就是元素中的内容 - 您在 HTML 中有一个回车符和一大堆空白。如果你不想要它,你将不得不修剪它。

或者您可以关闭元素末尾的空间<a>,以便</a>紧跟在内容的结尾之后,这样其中就没有空白了。

<a class="btn dropdown-toggle langLocaleNameSelector"
                data-toggle="dropdown">en_US<span class="caret"></span></a>

另一种选择是将<a>元素内容的相关部分放入没有任何空白的内部元素中。

zh_CN

...然后选择新的内部元素而不是<a>.

于 2013-06-16T20:00:32.370 回答