JQuery динамический селектор идентификатора, удалить, а затем добавить класс - PullRequest
2 голосов
/ 05 августа 2010

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

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

код 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>

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

Спасибо!

Ответы [ 3 ]

7 голосов
/ 05 августа 2010

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

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

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

$("#" + DivId).removeClass('add').addClass('del');
1 голос
/ 18 мая 2012

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

DivId.removeClass('add').addClass('del');
1 голос
/ 05 августа 2010

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

$(DivId).removeClass('add').addClass('del');
...