我的网页上有这个HTML:
<div class="phrase">
    <ul class="items">
        <li class="agap"><ul><li>TEXT1</li></ul></li>
        <li class="agap"><ul>  </ul></li> <!-- empty ul -->
        <li class="aword">TEXT2</li>
        ..
    </ul>
</div>

<div class="phrase"> ... </div>

我想获取每个“短语”文本变量中“项目”中的所有元素,如下所示:

var string = "TEXT1 - BLANK - TEXT2";

我目前有这个JavaScript代码:

<script>
$(function() {
    $('.phrase .items').each(function(){
        var myText = "";

        // At this point I need to loop all li items and get the text inside
        // depending on the class attribute

        alert(myText);

    });
};
</script>

如何迭代所有< li>里面的。

我正在尝试不同的方式,但我没有得到好的结果。

解决方法

首先,我认为您需要修复列表,作为< ul>的第一个节点必须是< li> ( stackoverflow ref)。一旦设置,您可以这样做:
// note this array has outer scope
var phrases = [];

$('.phrase').each(function(){
        // this is inner scope,in reference to the .phrase element
        var phrase = '';
        $(this).find('li').each(function(){
            // cache jquery var
            var current = $(this);
            // check if our current li has children (sub elements)
            // if it does,skip it
            // ps,you can work with this by seeing if the first child
            // is a UL with blank inside and odd your custom BLANK text
            if(current.children().size() > 0) {return true;}
            // add current text to our current phrase
            phrase += current.text();
        });
        // Now that our current phrase is completely build we add it to our outer array
        phrases.push(phrase);
    });
    // note the comma in the alert shows separate phrases
    alert(phrases);

工作jsfiddle。

有一件事是,如果你得到上层的.text(),你将得到所有的子级文本。

保留数组将允许提取许多多个短语。

编辑:

这样应该能够更好地使用空的UL,而不需要LI:

// outer scope
var phrases = [];

$('.phrase').each(function(){
    // inner scope
    var phrase = '';
    $(this).find('li').each(function(){
        // cache jquery object
        var current = $(this);
        // check for sub levels
        if(current.children().size() > 0) {
            // check is sublevel is just empty UL
            var emptyULtest = current.children().eq(0); 
            if(emptyULtest.is('ul') && $.trim(emptyULtest.text())==""){
                phrase += ' -BLANK- '; //custom blank text
                return true;   
            } else {
             // else it is an actual sublevel with li's
             return true;   
            }
        }
        // if it gets to here it is actual li
        phrase += current.text();
    });
    phrases.push(phrase);
});
// note the comma to separate multiple phrases
alert(phrases);

jQuery.each – 将li元素放入ul中的更多相关文章

  1. 浅析HTML5页面元素及属性

    这篇文章主要介绍了浅析HTML5页面元素及属性,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. 在Android Chrome浏览器中的移动Web应用程序菜单中未检测到HTML unicode

    我在Android移动Chrome浏览器的网站菜单中有一个问题,无法显示unicode.但如果我在iPhone或其他Android浏览器中检查我的Web应用程序,它正在呈现或正常工作.我在这个结构中使用了这个图标但它不是在移动Chrome浏览器中显示如何解决它!解决方法另一种选择是使用≡相反:它看起来非常相似:≡而不是

  3. vBulletin HACK----关于排版的两个HACK

    《以vB代码实现的简单文字排版》原因:1.1.4版本中没有这些,而国内的比较著名的UBBHACK之家就增加了很多对于文字排版的UBB代码。步骤:打开global.php,查找“functionbbcodeparse2{”,在[code]和其它HACK之前的适当位置,例如“//执行引用回复$bbcode=eregi_replace;//小写化$bbcode=str_replace;$bbcode=str_replace;$bbcode=str_replace;$bbcode=str_replace;”,在后

  4. php分别做为cgi和module来运行的配置

    php:PHPVersion5.0.0b4apache:Apache/2.0.49(Win32)1,做为cgi来运行2,做为module来运行1,做为apache2的cgi运行ScriptAlias/php/"c:/php/"AddTypeapplication/x-httpd-php.phpActionapplication/x-httpd-php"/php/php-cgi.exe"上面的代码添

  5. JDBCTM 指南:入门5 - ResultSet

    JavaSoft目前正在准备这本书。ResultSet.next方法用于移动到ResultSet中的下一行,使下一行成为当前行。在ResultSet对象或其父辈Statement对象关闭之前,光标一直保持有效。关于ResultSet中列的信息,可通过调用方法ResultSet.getMetaData得到。返回的ResultSetMetaData对象将给出其ResultSet对象各列的编号、类型和属性。getString的返回值将为JavaString对象。TIYITSMALLITITEGERBIGNTRE

  6. 修改UL和LI间隔的简单方法

    下面小编就为大家带来一篇修改UL和LI间隔的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. vBulletin HACK----显示话题大小和打开新窗口于论坛索引页

    vBulletinHACK----显示话题大小和打开新窗口于论坛索引页作者:gogosoft《显示话题大小》原因:1.1.4版本中没有此功能,而部分用户会以此作为是否查看话题的参考因素。《打开新窗口》原因:这对于浏览一个经常更新的论坛来说,是很有用的,用户可以很简单地就打开了很多不同话题的窗口。

  8. angular或者js怎么确定选中ul中的哪几个li

    下面小编就为大家带来一篇angular或者js怎么确定选中ul中的哪几个li。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. Jquery和JS获取ul中li标签的实现方法

    下面小编就为大家带来一篇Jquery和JS获取ul中li标签的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. HTML速写之Emmet语法规则的实现

    这篇文章主要介绍了HTML速写之Emmet语法规则的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

随机推荐

  1. jquery-plugins – 是否可以使用猫头鹰旋转木马实现循环/无限轮播?

    我正在使用猫头鹰旋转木马,它的工作完美,除了它不支持循环/无限滚动.我没有搜索google和stackoverflow的想法,没有运气.有没有人在猫头鹰旋转木马上实现圆形/无限滚动?

  2. jQuery动态输入字段焦点

    我想使用以下jQuery向我的页面动态添加一个输入字段:在这样做之后,我希望输入字段具有闪烁的文本光标的焦点,所以我想在创建后立即输入.有人可以告诉我我该怎么办?

  3. jquery – 为什么$(window).height()这样错了?

    我试图获取当前浏览器的视口高度,使用但我得到的价值观太低了.当视口高度高达850px时,我从height()获取大约350或400像素的值.这是怎么回事?

  4. jquery – 如果在此div之外和其他draggables内部(使用无效和有效的还原选项),则可拖动恢复

    例如这样但是由于明显的原因,这不行.我可以说这个吗?

  5. 创建一个jQueryUI 1.8按钮菜单

    现在jQueryUI1.8已经出来了,我正在浏览更新,并且遇到了新的Buttonwidget,特别是SplitButtonwithadropdown的演示之一.这个演示似乎表明Buttonwidget可以在这里创建一个下拉菜单.作为讨论的问题,我想知道使用这个新的Button小部件来创建一个下拉菜单有什么方法.干杯.解决方法您必须在按钮下方列出一个列表,方式类似于此处为自动完成提供的演示:http

  6. 灰色divs使用JQuery

    我试图使用这个代码:为了淡出一大堆名为MySelectorDiv的div,唯一的是,它只会淡出第一个而不是所有的div,为什么呢?

  7. 使用jQuery动态插入到列表中

    我有两个订单列表在彼此旁边.当我从一个列表中选出一个节点时,我想按照字母顺序插入到另一个列表中.抓住的是我想要把一个元素放在另一个列表中,而不刷新整个列表.奇怪的是,当我插入到右边的列表中,它工作正常,但是当我插入到左边的列表中时,顺序永远不会出来.我也尝试将所有内容读入数组,并将其排序在一起,以防止children()方法没有按照显示顺序返回任何东西,但是我仍然得到相同的结果.这是我的jQuer

  8. 没有回应MediaWiki API使用jQuery

    我试图从维基百科获取一些内容作为JSON:但我没有回应.如果我粘贴到浏览器的地址栏,就像我得到预期的内容.怎么了?解决方法您需要通过添加&callback=?来触发具有$.getJSON()的JSONP行为?在querystring上,像这样:Youcantestithere.没有使用JSONP,你正在击中same-originpolicy,阻止XmlHttpRequest获取任何数据.

  9. jQuery Ajax请求每30秒

    我有这段代码,但是有些人在我的网站上的值可能会改变.我需要每30秒钟更新一次#financediv.这可以做吗解决方法您可以将代码放在单独的函数中,如下所示:然后每30秒建立一个定时器调用该函数:祝你好运!总结以上是DEVMAX为你收集整理的jQueryAjax请求每30秒全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  10. jquery – keypress事件在IE和Chrome中不工作,但在FF工作

    任何想法为什么会这样发生?我通常认为Chrome会更加宽容代码?这是我的按键键.我错过了什么吗?右图();和leftimage();是应该工作的功能,因为我在其他地方使用这些功能谢谢您的帮助!

返回
顶部