获取`a`元素的文本值

时间:2013-06-16 19:34:57

标签: javascript jquery

我正在尝试使用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.如何获得该元素后的内部文本?

3 个答案:

答案 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"] 

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