Javascript 无法从函数返回值
我想从包含匿名函数的函数返回值Javascript 无法从函数返回值,javascript,jquery,Javascript,Jquery,我想从包含匿名函数的函数返回值 function getSingleCheckedItemId() { return $(".data-table-chk-item").each(function() { if ($(this).is(":checked")) { var value = $(this).attr("value"); return value; } }); } 在本例中,它返回所有复选框的数组。
function getSingleCheckedItemId() {
return $(".data-table-chk-item").each(function() {
if ($(this).is(":checked")) {
var value = $(this).attr("value");
return value;
}
});
}
在本例中,它返回所有复选框的数组。如果删除第一个返回
,它将不会返回值,而是未定义
那么如何从getSingleCheckedItemId()
返回值?始终返回包含您迭代过的所有元素的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')
更好的选项,以防您处理表单输入-由于选中了属性,您似乎有单选/复选框。另外,this.checked
返回一个布尔值,因此不需要使用$(this.is(“:checked”)
我相信你的逻辑可以简化为:
function getSingleCheckedItemId() {
return $(".data-table-chk-item:checked").val();
}
这种方法将返回第一个:checked
项的值,如果选择器没有匹配元素,则返回未定义的,与上面的循环相同。始终返回包含您迭代过的所有元素的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')
更好的选项,以防您处理表单输入-由于选中了属性,您似乎有单选/复选框。另外,this.checked
返回一个布尔值,因此不需要使用$(this.is(“:checked”)
我相信你的逻辑可以简化为:
function getSingleCheckedItemId() {
return $(".data-table-chk-item:checked").val();
}
这种方法将返回第一个:选中的项的值,或者如果选择器没有匹配元素,则返回未定义的项的值,这与上面的循环相同。您可以执行以下操作:
function getSingelCheckedItemId() {
var elements = $(".data-table-chk-item:checked");
return (elements.length > 0) ? $(elements[0]).val() : undefined;
}
你可以这样做:
function getSingelCheckedItemId() {
var elements = $(".data-table-chk-item:checked");
return (elements.length > 0) ? $(elements[0]).val() : undefined;
}
我会这样做
function getSingleCheckedItemId() {
var ret;
$(".data-table-chk-item").each(function() {
if ($(this).is(":checked")) {
ret = $(this).attr("value");
}
});
return ret;
}
我会这样做
function getSingleCheckedItemId() {
var ret;
$(".data-table-chk-item").each(function() {
if ($(this).is(":checked")) {
ret = $(this).attr("value");
}
});
return ret;
}
尝试使用filter
而不是each
。或者map
如果您确实需要获取值,那么可能。但我认为他可以通过亲自访问这些函数的文档了解更多。另外,我现在没有时间检查jQuery的impl…尝试使用filter
而不是each
。或者map
如果您确实需要获取值,那么可能。但我认为他可以通过亲自访问这些函数的文档了解更多。另外,我现在没有时间检查jQuery的impls…您不必:var ret=$(this.attr(“value”)代码>在该函数下。。。只是ret=$(this.attr(“value”)代码>:)您不必:var ret=$(this.attr(“value”)代码>在该函数下。。。只是ret=$(this.attr(“value”)代码>:)返回false不是从getSingleCheckedItem中断并返回false而不是ret值吗?不,返回false
不会影响的返回值。每个的返回值,并且此答案也不使用的返回值<代码>=]
它只从前面的每一个中断。返回false不是从getSingleCheckedItem中分离出来并返回false而不是ret值吗?不,返回false不会影响。each
的返回值,并且这个答案也不会使用。each
的返回值<代码>=]
它只从前面的每一个中断。