2014-02-15 5 views
0

두 속성을 사용하여 요소를 찾는 방법을 알아 내려고합니다. 하나는 데이터 객체입니다.개체 데이터에서 요소를 어떻게 찾을 수 있습니까?

이 코드를 가지고 ...

HTML :

<div data-div></div> 

자바 스크립트 : 위의 마지막 줄에서

$(document).ready(function() { 
    var m = { "Name": "John", "Age": 38 }; 
    $("[data-div]").data("user", m); 
    $("[data-div]").html($("[data-div]").data("user").Name); 
    $("[data-div][data-user-Name='John']").html("YES!"); // <-- doesn't work 
}); 

, 나는 데이터 키와에 의해 요소를 얻으려고 데이터 객체 (user = John).

위의 코드는 작동하지 않으므로 어떻게 할 수 있습니까?

여기에 문제가 $("[data-div]").data("user", m);will not create a data-* attribute입니다

+0

합니다. 데이터를 설정하기 위해 사용했던 것과 동일한 API ($ .data)를 사용하지 않고 데이터를 가져 오는 이유는 무엇입니까? – thescientist

답변

2

... 바이올린 샘플입니다. 이것은 .data()을위한 것이 아닙니다. .data()은 "data-* 속성 추가"를 의미하는 것이 아니라 특정 노드에 임의의 데이터를 추가하기위한 것입니다.

당신은 data-* 속성을 추가 할 수 attr()을 사용해야합니다

: jQuery를 데이터 값을 검색하려면

$("[data-div]").attr({ 
    "data-user-name": "John", 
    "data-user-age": 38 
}); 

을,이 시도 :

$("[data-div]").filter(function(){ 
    return $(this).data("user").Name == "John"; 
}); 
+0

나를 도와 주셔서 감사합니다. 이 라인은 완벽하게 작동합니다 .... $ ("[data-div]"). 데이터 ("user") ... 이름 ... 잘 저장되어 있으므로 검색 할 수 없습니다. – MojoDK

+0

@MojoDK - 예, 저장했지만'data- *'속성으로 저장되지 않습니다. 업데이트 된 답변보기 –

+1

감사합니다. :) 그것을 시도합니다. – MojoDK

0

당신이 .data('')와 데이터 값을 설정하는 경우 속성으로 저장되지 않습니다. 당신은 .attr('data-user-name','John')와 속성을 설정해야합니다 중 하나 또는 당신이 filter() 기능을 사용하여 요소를 찾을 수있다 : 그것이 작동하는 방법이 아니다

$('[data-div]').filter(function(){ 
    return $(this).data('user').Name == 'John'; 
}); 
관련 문제