javascript - 无法从函数返回值

标签 javascript jquery

我想从包含匿名函数的函数返回值。

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/

相关文章:

javascript - JQuery - $ 未使用 Yeoman 定义

php - 遍历javascript中的表单元素并添加获取的值

javascript - 在 CSS 中传递引用?

java - 用于 html5 音频和视频的volumeslider

javascript - 根据显示 flexbox 中的子项设置父项高度/宽度

jQuery 工具 : How to prevent a submit event from a form that is rendered dynamically into a page

jquery - 表单验证后如何使用ajax发布表单?

javascript - 检查是否加载了javascript文件

javascript - jQuery、Asp.net -jAutoCalc : Implement auto calculation on the form to be appended in the table using jQuery

javascript - 我可以在 TypeScript 中获取当前行号吗