有这样的结构
<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());追问
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());
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);
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)");
$("ul li:eq(rad)");