2014-02-15 3 views
0

Я пытаюсь выяснить, как найти элемент, используя два атрибута, где один является объектом данных.Как я могу найти элемент из данных объекта?

Возьмите этот код ...

Html:

<div data-div></div> 

Javascript:

$(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 
}); 

В последней строке выше, я стараюсь, чтобы получить элемент по ключу данных и объект данных (пользователь = Джон).

Как это сделать, так как выше не работает?

Вот скрипку образец ...

+0

Это не то, как это работает. Почему бы не использовать тот же API ($ .data), который вы использовали для установки данных, чтобы получить данные вместе? – thescientist

ответ

2

Проблема заключается в $("[data-div]").data("user", m);will not create a data-* attribute. Это не .data() для. .data() не означает «добавление data-* атрибутов», вместо этого они предназначены для добавления произвольных данных к конкретным узлам.

Вы должны будете использовать attr() добавить data-* атрибуты:

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

Для поиска значений данных Jquery, попробуйте следующее:

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

Спасибо, что помогли мне здесь. Ну, эта строка отлично работает ... $ («[data-div]»). Data («user»). Name ... так что он хранится в порядке, я просто не могу его искать. – MojoDK

+0

@MojoDK - Да, он сохранил его, но он не хранится как атрибут 'data- *'. См. Обновленный ответ. –

+1

Спасибо! :) Попробуй это. – MojoDK

0

Если установить значение данных с .data('') он не сохраняется как атрибут. Вы должны либо установить атрибут с .attr('data-user-name','John') или вы должны найти элемент, используя функцию filter():

$('[data-div]').filter(function(){ 
    return $(this).data('user').Name == 'John'; 
}); 
Смежные вопросы