jQuery得到.text()但不是span中的文本

Rus*_*wer 10 javascript jquery menu textnode

大家好,这是我的jQuery部分,为我的页面制作菜单.

function fetchmenus() {
    $.getJSON('sys/classes/fetch.php?proccess=1', function(status) {
        // get line status
        $.each(status, function(i, item) {
            if (item.id == "1") {
                active = "class='active'";
                lastpageid = item.href;
            }
            else {
                active = "class='nonactive'";
            }
            $('<li id="' + item.href + '" ' + active + '><a href="#' + item.href + '">' + item.menuTitle + '<span class="menuspan" id="' + item.href + '"></span></a></li>').appendTo('#menuarea ul#mainmenu');

        });
    });
}
Run Code Online (Sandbox Code Playgroud)

我想要做的就是在item.menuTitle<a,而是在<span>

目前我是这样做的:

$('ul#mainmenu li').live('click', function(event) {
    //alert(this.id);
    $("li#" + lastpageid).removeClass();
    fetchpage(this.id);

    $("#largemenutop").html($(this).text());

    $("li#" + this.id).addClass("active");
    lastpageid = this.id;
});;
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

Gar*_*een 22

很好的解决方案赫尔曼,虽然它可以简化为这样的事情:

JS

$('li a').contents().filter(function() {
    return this.nodeType == 3;
}).text();
Run Code Online (Sandbox Code Playgroud)

HTML

<li><a href="#">Apple<span>hi</span> Juice</a></li>
Run Code Online (Sandbox Code Playgroud)

将返回 Apple Juice

小提琴:http://jsfiddle.net/49sHa/1/


Her*_*aaf 8

是的,您只能选择元素的文本内容,如下所示:

 var text = '';
 $('a').contents().each(function(){
    if(this.nodeType === 3){
     text += this.wholeText;
    }
 });
 $("#largemenutop").html(text);
Run Code Online (Sandbox Code Playgroud)

  • +1赫尔曼,很好的解决方案.这里有一个[NodeTypes列表](http://code.stephenmorley.org/javascript/dom-nodetype-constants/),对于想知道"3"意味着什么的人来说. (4认同)