2010-08-04 2 views
2

У меня есть таблица со строками, у которых есть ячейка div с динамически сгенерированным идентификатором в формате btn-insertidhere.jquery dynamic id selector, remove then add class

Когда выбрана строка таблицы, я хочу выбрать этот идентификатор 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. Мне просто нужно изменить класс!

Спасибо!

ответ

7

Вы должны либо получить объект JQ для DIV путем удаления '.attr (ID)' часть

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

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

$("#" + DivId).removeClass('add').addClass('del'); 
+0

ОБЩИЕ РЕШЕНИЯ! Большое спасибо. Из любопытства, какой путь лучше? Метод .find() или получить метод .attr (id)? – jp577

+0

Лучше использовать первый ... с поиском у вас уже есть div, завернутый в объект jquery, вам не нужно его снова искать, как во втором случае ... – Jaime

1

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

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

Он сохраняет класс 'add', когда он присоединяется к новой таблице. Есть предположения? – jp577

+0

Простите, Хайме ответил, прежде чем я исправлю это. – calvinf

1

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

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