Вот аналогия моей проблемы (селектор, который имеет этот селектор вместе с селектором класса):
Допустим, я выбираю все желтые (классы) элементы div в произвольном HTML-документе. И я хочу, чтобы каждый из них проверял, является ли атрибут yes = 1. Если атрибут «yes» равен «1», то я хочу, чтобы дочерний элемент с классом «blue» имел атрибут «no», равный «1»;
$('div .yellow').each(function(){
if($(this).attr('yes') == 1){
$(this '.blue:first-child').attr('no', 1);//This line needs to be fixed
}
});
Я знаю, что линия this.getElementsByClassName('blue')[0]
решает эту проблему. Но в моей реальной проблеме (не в этой аналогии) я хочу использовать addClass и removeClass, которые работают только с объектами jQuery. Громоздко использовать другие функции, кроме addClass и removeClass.
UPDATE:
Вот фрагмент кода из моей настоящей проблемы. У меня есть некоторые проблемы с «этим» в JavaScript.
Я хочу, чтобы на приглашенной кнопке было отображено имя класса при нажатии на нее. Кнопка находится внутри элемента div с className 'box'. Я знаю, что есть проблема с этим в фрагменте кода. Но я хочу чтобы кнопка а не поле поменялось на видимое
$('.Box').each(function(){
if($(this).attr('hasButton') != 1){
var invite = document.createElement('div');
invite.className = 'invite invisible';
invite.innerHTML = 'invite';
$(this).attr('hasButton', 1);
this.appendChild(invite);
invite.addEventListener('mouseover', function(event){
$('.invite', this).removeClass('invisible');//this line is not functioning
$('.invite', this).addClass('visible');//neither this
}, false);
}
});
Хорошо, решил это. Я передал элемент как атрибут вместо classSelector.
$(invite).removeClass('invisible');
$(invite).addClass('visible');