Как я могу сравнить живой элемент с элементом, хранящимся в данных? - PullRequest
0 голосов
/ 24 июня 2011

У меня есть серия div:

<div class="some_class active">Some Content</div>
<div class="some_class">Different Content</div>
<div class="some_class">More Different Content</div>

(активный класс изменяется динамически)

Каждый из них был назначен данным элемента изображения таким образом:

$("div.some_class").each(function(){
        current = $(this);

        $('div#images').append('<img class="link new" src="/style/images/image.png" />');
        $(".link.new").removeClass('new').data('project', current);
    });

Я хочу использовать эту функцию для сравнения активного элемента с теми, которые хранятся в данных:

function live_test(){

        active = $("div.some_class.active");
        $("#images img.link").each(function(){

            if ($(this).data('project') == active){
                $(this).addClass("active");
            }
        });
    }

Намерение состоит в том, чтобы добавить класс active к изображению, которое содержит тот же div.some_element, что итот, который имеет активный класс, но эта функция все время возвращает false, никогда не находя соответствия.Я почти уверен, что мне здесь не хватает фундаментального, но что?И есть ли другой способ сделать это?

1 Ответ

2 голосов
/ 24 июня 2011

Вы сравниваете 2 объекта jquery.Эти объекты никогда не будут прежними.То, что вы хотите сравнить, это элементы внутри объектов jquery.Предполагая, что оба могут иметь только один элемент, сделайте следующее:

if ($(this).data('project')[0] == active[0]){

Редактировать:
Хотя приведенное выше должно ответить на ваш вопрос, почему бы не сделать обратноеделает.Вместо того, чтобы хранить элемент на изображении, сохраните изображение (или идентификатор изображения) на элементе.Тогда вы можете легко получить изображение, связанное с данным элементом.Вы хотите избежать циклов, когда это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...