我想从包含匿名函数的函数返回值。
function getSingleCheckedItemId() {
return $(".data-table-chk-item").each(function() {
if ($(this).is(":checked")) {
var value = $(this).attr("value");
return value;
}
});
}
在这种情况下,它返回所有复选框的数组。如果我删除了第一个return
,则不会返回值undefined
。
那么如何从getSingleCheckedItemId()
返回值?
答案 0 :(得分:5)
.each
总是返回包含您迭代的所有元素的jQuery对象,所以:
function getSingleCheckedItemId() {
var ret;
$(".data-table-chk-item").each(function() {
if ($(this).is(":checked")) {
ret = $(this).attr("value");
return false; //breaks out of .each
}
});
return ret;
}
此外,this.value
通常是比$(this).attr('value')
更好的选择,以防您处理表单输入 - 看起来您有radio
/ checkbox
输入checked
财产。此外,this.checked
返回一个布尔值,因此也不需要$(this).is(':checked')
。
我相信你的逻辑可以简化为:
function getSingleCheckedItemId() {
return $(".data-table-chk-item:checked").val();
}
这种方式.val()
将返回第一个:checked
项或undefined
的值,如果选择器没有匹配任何元素,则与上面的循环相同。
答案 1 :(得分:2)
你可以这样做:
function getSingelCheckedItemId() {
var elements = $(".data-table-chk-item:checked");
return (elements.length > 0) ? $(elements[0]).val() : undefined;
}
答案 2 :(得分:1)
我会这样做
function getSingleCheckedItemId() {
var ret;
$(".data-table-chk-item").each(function() {
if ($(this).is(":checked")) {
ret = $(this).attr("value");
}
});
return ret;
}