2013-04-22 5 views
1

я считаю, что это очень глупый вопрос, и есть очень простой ответ на это, но я не нашел решение:Использование JQuery-функции на DOM-элемент

У меня есть следующие функции JavaScript:

function setStatus(order, operation, status, elem){ 
    elem.parent().$(".active").removeClass("active"); 
    elem.addClass("active"); 
} 

Эль этого изображение-элемент в моем HTML, который я уверен, что это правильный один, проверяя его тип с alert(elem);

Я получаю ошибку именно то, что я ожидал:

Объект # < HTMLImageElement> не имеет методы «родителя»

Я уже знаю, что это потому, что эль является DOM-элемент, а не JQuery-элемент, который означает, что это не представляется возможным использовать такие функции, как parent() и addClass(). Как я могу использовать всю функцию JQuery на моем элементе? Есть ли способ конвертировать DOM-элемент в элемент JQuery? Я часто задавал этот вопрос в Интернете с this, который должен был быть $(this), но $(elem) не работает.

+0

'$ (элем) .siblings() removeClass ("активный") конец() addClass ("активный");... '...? – Anujith

+0

Почему вы используете '$ (". Active ")'? – muneebShabbir

+0

'$ (". Active ", $ (elem) .parent()). RemoveClass (" active "); $ (elem) .addClass ("active"); ' alert() не лучший способ для регистрации/отладки кода. Вместо этого используйте console.log ($ (elem)); –

ответ

2

Попробуйте

function setStatus(order, operation, status, elem){ 
    elem.parent().find(".active").removeClass("active"); 
    elem.addClass("active"); 
} 
2

попробовать это

$(elem).parent().removeClass("active"); 
$(elem).addClass("active"); 

удалить $(".active"). Я думаю, что это тоже преступник.

+0

что делает трюк! Но как я должен удалить все «активы» из элементов с активным именем класса? – Jovano

+0

'$ (". Active "). RemoveClass (" active ");' добавить эту строку в начале кода. ghope будет работать – muneebShabbir

+0

ну, это не совсем то же самое, что я хотел сделать, функция должна удалить все «активы» из элементов с именем класса, активным в родительском элементе. Ваш код удалит «активный» родительский элемент, а не элементы WITHIN parent – Jovano

1

.parent() функция JQuery так, чтобы использовать его, вы должны «jqueryify» элемент вы работаете, так:

$(elem) 

также паразитная $('.active') бы вызвать проблемы, поэтому решение должно быть :

$(elem).parent().removeClass("active"); 

Однако, не видя какого-либо HTML-кода, чтобы согласиться с JS, я не могу быть на 100% уверенным.

0

У вас есть синтаксические ошибки в вашем скрипте, и вы можете использовать этот .addback(), чтобы связать его.

elem.parent(".active").removeClass("active").addBack().addClass("active"); 
Смежные вопросы