2012-06-15 2 views
0

혼란스럽고 jQuery에 대한 지식이 어디에서 파탄하는지 잘 모르겠습니다. 아무도 왜 이것이 작동하지 않는지 설명 할 수 있습니까?문자열 목록에서 DOM 개체 생성 및 추가 jQuery의 값

<ul id="MyList"></ul> 

와 자바 스크립트 문자열 :

는 HTML을 감안할 때 (내가 쉽게에서 바로 점프 할 수 있도록하기 위해 JSFiddle page을 설정 한)

var itemString = "Item1,Item2,Item3"; 

않는 이유는 다음과 같은 방법 LI 객체가 작동하지 않는 문자열 추가 (NOT_FOUND_ERR : DOM 예외 8) :

aStrings = itemString.split(","); 
aLi = $.map($.makeArray(aStrings), function(x) { 
    return $("<li>").text(x); 
}); 
$("#MyList").append(aLi); 

$ .each()를 사용하면 (다음 예제), $ .map 메서드에 대한 이해가 잘못 되었습니까?

aStrings = itemString.split(","); 
$.each(aStrings, function(i, x) { 
    $("MyList").append($("<li>").text(x)); 
}); 

내 배열은 진정한 LI DOM 요소 모음이 아닙니까? 미리

감사 ... JQuery와 워드 프로세서

답변

2

매핑 내에서 jQuery에서 원하는 단순한 html을 감쌀 필요가 없습니다. 불필요한 함수 호출이 추가로 생성됩니다.

aStrings = itemString.split(","); 
    aLi = $.map(aStrings, function(x) { 
     return "<li>" + x +"<li>"; 
    }).join(''); 

    $("#MyList").append(aLi); 

$.map 다음 다음

DEMO를 추가됩니다 단일 문자열로 변경 join() 문자열 배열을 반환합니다 또한, aStrings가 만드는 배열이 필요 $.makeArray()

이 시도 사용하는 이미 : http://jsfiddle.net/3cYaW/2/

1

:

설명 : 패스의 각 요소 전류 리턴 값을 포함하는 신규의 jQuery 오브젝트를 생성하는 기능을 설정 유사한 .

일치하는 세트에서 사용하지 않습니다. 즉 $('someSelector').map(function{}).doSomethingWithReturnedJQueryObject()입니다. 한 목록에있는 항목을 다른 목록으로 이동하려는 경우 맵 기능을 사용할 수는 있지만 작동하지 않는 예제에서 사용하는 방식으로는 사용하지 않을 것이라고 생각합니다.

즉, map() 기능은 여기에서 사용하려는 것과 완전히 반대되는 방식으로 사용됩니다. 이를 사용하여 각 <li>의 내용을 가져 와서 index1, index2, index3 문자열을 빌드 할 수 있습니다.

+0

map()에 대한 잘못된 문서를 읽는 중 ... http://api.jquery.com/jQuery.map/ – charlietfl

+0

하하. 죄송합니다. 그렇습니다. jQuery가 거의 동일한 시그니처가있는 두 개의 서로 다른 함수를 갖는 것을 혼란스럽게합니다. 그 페이지를 읽은 후에 나는 @charlietfl이 준 대답에 동의한다. –

+0

다른 방법으로 사용할 수있는'map'과'each'와 같은 몇 가지 jQuery 메서드가 있습니다. jQuery 내부 사용법과 관련있다. – charlietfl