我有几个span标记,如果存在,我需要检查具有具体id的span标记。
以下示例返回false。可能有什么不对? I have an example available at this link。
HTML:
<div id="recipient_list">
<span id="r1"></span>
<span id="r4"></span>
<span id="r5"></span>
</div>
的javascript:
function check_in_recipient_list (id) {
$("#recipient_list > span").each( function () {
existed_id = $(this).attr("id");
if (existed_id === "r"+id+"") {
return true;
}
});
return false;
}
$(document).on("dblclick", function () {
alert( check_in_recipient_list(1) );
})
答案 0 :(得分:3)
为什么不重述你的功能,比如
function check_in_recipient_list (id) {
return $("#recipient_list > span#r" + id).length > 0;
}
如果层次结构/依赖关系无关紧要,且标识为#r*
的元素只能位于#recipient_list
下,您也可以选择
function check_in_recipient_list (id) {
return $("span#r" + id).length > 0;
}
和..此外,如果标识为#r*
的元素仅为span
- 元素,您也可以
function check_in_recipient_list (id) {
return $("#r" + id).length > 0;
}
答案 1 :(得分:1)
您的回复退出了您提供给each
的回调,而不是来自check_in_recipient_list
功能。
这样做:
function check_in_recipient_list (id) {
var found = false;
$("#recipient_list > span").each( function () {
var existed_id = this.id; // faster and simpler than using attr, and don't forget var
if (existed_id === "r"+id+"") {
found = true;
return false; // this breaks the iteration
}
});
return found;
}
请注意,整体可以更简单:
function check_in_recipient_list (id) {
return $("#recipient_list > span#r"+id).length>0
}
答案 2 :(得分:0)
尝试
$("#recipient_list > span[id='"+id+"']").lenght>0