2011-02-23 3 views
1

Prototype.js를 사용하고 있습니다. 그러나 이것은 jQuery에도 적용됩니다. 각 행이 배열에 포함 된 javascript의 객체와 관련이있는 일련의 행이있는 HTML 목록이 있습니다. 따라서 :javascript - HTML ID 태그를 사용하거나 요소에 속성을 추가 하시겠습니까?

<ul> 
    <li id="0">blah</li> 
    <li id="1">blahblah></li> 
</ul> 

현재 javascript 객체가 참조 할 ID 태그를 사용하고 있습니다. 그래서 행의 사용자 clickes는, 이벤트 코드가 같을 때 :

var clickedItem = event.findElement('li'); 
if (clickedItem) { 
    var itemID = clickedItem.identify(); 
    var foundBlah = blahList[itemID]; 

ID를 사용하는 것은 나쁜 생각을 태그하고 만들 때 내가 대신 같은, 각 행에 속성을 추가해야합니다인가 :

var blah = new Blah('blah'); 
    $(list).insert(<li>blah</li>).blah = blah; 

그런 다음 이벤트 처리기에서 해당 값을 검색하면됩니까?

답변

0

나는 프로토 타입에 익숙 해요,하지만 jQuery를, 이것은 당신이 요소에 임의의 데이터를 연결할 수 있습니다 .data()에 대한 작업, 같은 소리 :

$(list).insert($("<li>blah</li>").data("blah", blah)); 

// later... 
var blah = $(event.target).data("blah"); 

업데이트

프로토 타입이있다 마찬가지로 및 Element#retrieve과 같이 메타 데이터를 첨부 할 수 있습니다.

$(list).insert(new Element("li").insert("blah").store("blah", blah)); 

// later... 
var blah = event.findElement("li").retrieve("blah") 
+0

Th ere는 다음과 같이 store라는 프로토 타입에있는 것입니다. $ (list) .insert (...). store ('key', 'value'); 그리고 나중에 : 요소에 .retrieve ('key'). 비록 내가 엘리먼트에 속성을 추가하기보다는 왜 이것을 사용할 것인지 모르겠지만. – BobTurbo

+0

@BobTurbo - Prototype의'.store()'/'.retrieve()'는'.data()'와 동일합니다. DOM을 어지럽히 지 않고 JS 고유의 데이터를 요소에 첨부 할 수 있으므로 설명하는대로 이상적인 방법이라고 생각합니다. –

+0

아, 고마워. :) – BobTurbo

관련 문제