Селектор динамического идентификатора jquery, удалите, затем добавьте класс

У меня есть таблица со строками, каждая из которых имеет ячейку div с динамически сгенерированным идентификатором в формате btn-insertidhere.

Когда выбрана строка таблицы, я хочу выбрать этот идентификатор div, затем удалить класс и изменить его на другой. Это связано с тем, что я хочу, чтобы изображение кнопки изменилось с символа добавления на символ удаления, который при нажатии.

javascript-код:

  $('*[class^=day] tbody tr[id^=band]').live('click', function() {
        var DivId = $(this).find('div.add').attr('id');
        alert(DivId);

        $('DivId').removeClass('add').addClass('del');
        $('table#fri_myTimes tbody').append($(this)).fadeIn(1000);
        return false;
});

Это html-фрагмент динамически сгенерированного кода:

<tr id="band-Modest-Mouse">
<td>Modest Mouse</td>
<td>15:25:00</td>
<td>16:10:00</td>
<td>45</td>
<td><div id="btn-Modest-Mouse" class="add">&nbsp;</div></td>
</tr>

Как видите, я хочу изменить класс «добавить» на «класс удаления». Все строки таблицы в таблице генерируются таким образом, поэтому, как вы можете видеть, я выбрал подход с подстановочными знаками, который, кажется, работает, потому что показанное предупреждение показывает правильный идентификатор div. Мне просто нужно сменить класс!

Спасибо!


person jp577    schedule 04.08.2010    source источник


Ответы (3)


Вам либо нужно получить объект jq для div, удалив часть '.attr(id)'

var DivId = $(this).find('div.add');
...
$(DivId).removeClass('add').addClass('del');

или добавьте # в селектор divId

$("#" + DivId).removeClass('add').addClass('del');
person Jaime    schedule 05.08.2010
comment
ОБА РЕШЕНИЯ РАБОТАЛИ! Большое спасибо. Из любопытства, какой способ лучше? Метод .find() или получить метод .attr(id)? - person jp577; 05.08.2010
comment
Лучше использовать первый... с находкой у вас уже есть div, завернутый в объект jquery, вам не нужно его снова находить, как во втором случае... - person Jaime; 05.08.2010

Попробуйте убрать кавычки вокруг DivId. Это имя переменной и не должно быть в кавычках. Как таковой:

$(DivId).removeClass('add').addClass('del');
person calvinf    schedule 05.08.2010
comment
Он сохраняет класс «добавить» при добавлении к новой таблице. Какие-нибудь мысли? - person jp577; 05.08.2010
comment
Извините за это, Джейме ответил, прежде чем я успел исправить это. - person calvinf; 05.08.2010

Поскольку ваша переменная DivId является объектом jquery, вам вообще не нужен $():

DivId.removeClass('add').addClass('del');
person Daniel    schedule 18.05.2012