1

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

function getSingleCheckedItemId() {
    return $(".data-table-chk-item").each(function() {
      if ($(this).is(":checked")) {
          var value = $(this).attr("value");
          return value;
      }
    });
  }

在这种情况下,它会返回所有复选框的数组。如果我删除第一个return,它不会返回一个值但是undefined.

那么如何从 中返回值getSingleCheckedItemId()

4

3 回答 3

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/输入。此外,返回一个布尔值,因此两者都不需要。checkboxcheckedthis.checked$(this).is(':checked')


我相信您的逻辑可以简化为:

function getSingleCheckedItemId() {
    return $(".data-table-chk-item:checked").val();
}

这种方式.val()将返回第一:checked项的值,或者undefined如果选择器没有匹配任何元素,这与上面的循环相同。

于 2013-03-13T11:54:29.850 回答
2

你能行的:

function getSingelCheckedItemId() {
    var elements = $(".data-table-chk-item:checked");
    return (elements.length > 0) ? $(elements[0]).val() : undefined;
}
于 2013-03-13T12:01:38.260 回答
1

我会这样做

function getSingleCheckedItemId() {
    var ret;
    $(".data-table-chk-item").each(function() {
        if ($(this).is(":checked")) {
            ret = $(this).attr("value");
        }
    });
    return ret;
}
于 2013-03-13T12:01:40.970 回答