我想从包含匿名函数的函数返回值。
function getSingleCheckedItemId() {
return $(".data-table-chk-item").each(function() {
if ($(this).is(":checked")) {
var value = $(this).attr("value");
return value;
}
});
}
在这种情况下,它会返回所有复选框的数组。如果我删除第一个 return
,它不会返回值,而是返回 undefined
。
那么如何从 getSingleCheckedItemId()
返回值?
最佳答案
.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
返回一个 bool 值,因此也不需要 $(this).is(':checked')
。
我相信你的逻辑可以简化为:
function getSingleCheckedItemId() {
return $(".data-table-chk-item:checked").val();
}
这边.val()
将返回第一个 :checked
项的值,如果没有元素与选择器匹配,则返回 undefined
,这与上面的循环相同。
关于javascript - 无法从函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15384548/