jquery筛选:如何通过已知的字符串筛选网页中的元素

有这样的结构
<div class="a">
<div class="b">
<h1>字符串</h1>
</div>

<ul>
<li>这是要获取的元素,随机的</li>
</ul>
</div>

要把<li>这是要获取的元素,随机的</li>获取到。请问怎么筛选,jquery的。答得好的,悬赏分会再增加的。

var findLi = function (str) {
   var li;
   $("ul li").each(function () {
       if ($(this).text() == str) {
           li = $(this);
       }
   });
   return li;
};

//调用
alert(findLi($('h1').text()).text());

追问

能不能用一条条件表达式完成!用这些方法has() next() 之类的 。li不止一条哦

追答

我已经把这个封装成一个函数了,和has(),next()有区别么?而且我是获取ul里所有的li进行迭代。你说的li不止一条是findLi返回的不止一条li吗?

追问

我测试了下,这个代码执行之后不弹出啊。你有测试过吗?是不是代码有误啊。

追答

不弹出的原因只可能是你传进去的str参数不等于li的text。

var findLi = function (str) {
    var li;
    $("#ul li").each(function () {
        if ($(this).text() == str) {
            li = $(this);
        }
    });
    if (li) {
        return li;
    } else {
        alert("str参数与li的text不匹配");
        return false;
    }
};
alert(findLi($('#span').text()).text());

看这个是否会明白点?

追问

参数是字符串里的字符串。结果是:这是要获取的元素,随机的(li可能有多个)。

追答var findLi = function (str) {
    var liArr = [];
    $("ul li").each(function () {
        if ($(this).text() == str) {
            liArr.push($(this));
        }
    });
    if (liArr.length!=0) {
        return liArr;
    } else {
        alert("没有与str参数匹配的li");
        return false;
    }
};
alert(findLi($('h1').text()).length);

这样返回的是一个数组,包含多个li标签。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-17
用random生成一个随机数,rad。
$("ul li:eq(rad)");

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网