2013-03-13 8 views
1

익명 함수가 포함 된 함수에서 값을 반환하고 싶습니다.함수에서 값을 반환 할 수 없습니다.

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

이 경우 모든 체크 박스의 배열을 반환합니다. 처음 return을 제거하면 undefined 값을 반환하지 않습니다.

그럼 getSingleCheckedItemId()의 값을 어떻게 반환합니까?

+1

처럼 그것을 할 것입니다. 또는 값을 꼭 지어야하는 경우'map '하십시오. –

+0

@dystroy, 아마도. 하지만 그는 그 기능들에 대한 문서를 직접 치고 더 많은 것을 배울 수 있다고 생각합니다. 또한 나는 지금 jQuery의 impls를 검사 할 시간이 없다. –

답변

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 개의 입력이 발생했습니다. 또한 this.checked은 부울을 반환하므로 $(this).is(':checked')도 필요하지 않습니다. 어떤 요소가 동일한 작업을 수행하는 선택, 일치하지 않으면 .val() 첫 번째 :checked 항목이나 undefined의 값을 반환합니다

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

이 방법 :


나는 당신의 논리로 단순화 할 수 있다고 생각 위의 루프와 같습니다.

+0

당신은 다음을 할 필요가 없다 : var ret = $ (this) .attr ("value");'그 함수 아래 ... 그냥 ret = $ (this) .attr ("value");':) –

+1

@ZlatanO. 오, 그걸 간과 했어. 고마워! –

2

당신은 그것을 할 수 있습니다 :

function getSingelCheckedItemId() { 
    var elements = $(".data-table-chk-item:checked"); 
    return (elements.length > 0) ? $(elements[0]).val() : undefined; 
} 
1

나는`대신 each``의 filter` 사용해보십시오이

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

"잘못된 것"을 설명하는 마인드는 false를 반환합니까? –

+0

getSingleCheckedItem에서 False break를 반환하지 않고 ret 값 대신 false를 반환합니까? – HeremansY

+0

아니요,'return false'는'.each'의 반환 값에 영향을 미치지 않습니다.이 대답은'.each'의 반환 값을 사용하지 않습니다. '=]'그것은 이전의 것에서부터 나옵니다. http://jsfiddle.net/ult_combo/4xqFG/1/ –

관련 문제