#jquery
#jquery
Вопрос:
Я пытаюсь установить атрибут класса для всех ячеек в данной строке таблицы. Вот что я попытался, но пока я не получаю исключения, это тоже не работает.
Вот пример текущего html для строк / ячеек следующим образом.
<tr id="rowid-1234">
<td class="tblistred">20-400 Silver Metal Closure</td>
<td class="tblistred">Tecno, LLC</td>
<td class="tblistred">Closure</td>
<td class="tblistred">New Item</td>
</tr>
Вот мой скрипт:
var rowId = "#rowid-" response.id;
$(rowId).each(function (index) {
$(this).children('td').addClass('tblist');
});
Обновить
Хорошо, я изменил его на этот, но он по-прежнему не устанавливает класс.
alert($(rowId).find("td:first-child").text());
$(rowId).children('td').addClass('tblist');
Я добавил предупреждение, чтобы убедиться, что у меня есть правильная строка, и оно подтверждает, что у меня есть.
РЕШЕНИЕ Мне пришлось удалить класс, который уже был там
$(rowId ' td').removeClass('tblistred').addClass('tblist');
Комментарии:
1. Такого рода ошибки должны быть обнаружены с подсветкой синтаксиса. Блокнот не является хорошим редактором исходного кода.
2. @Chad Или в предварительном просмотре кода в StackOverflow…
3. Я использую Visual Studio, но это объявление переменной, которое я добавил, было просто введено, когда я опубликовал свой вопрос. Я отредактировал вопрос.
4. Когда вы говорите «это не работает», вы уверены, что класс не применяется к вашим
td
s? Возможно, CSS просто не выполняет то, что вы ожидаете.5. Нет, я проверил класс в td после запуска скрипта. Я должен указать, что класс уже установлен для td, и я пытаюсь его изменить. Возможно, addClass не заменяет существующий класс?
Ответ №1:
Как показывает подсветка кода, у вас не совпадающие кавычки:
var rowID = '#row-' response.id; // <-- see matching single quotes
Кроме того, у вас должен быть только один элемент с заданным значением id
, поэтому вызывать each
его на самом деле не имеет смысла. Если у вас есть несколько одинаковых элементов id
, это может быть еще одной причиной сбоя. Если нет, вы можете просто сделать $(rowId).children('td').addClass('tblist');
Комментарии:
1. Я попробовал это, $(rowId).children(‘td’).addClass(‘tblist’);, но это не сработало. Смотрите мои обновления к моему вопросу.
Ответ №2:
Как насчет:
$(rowID ' td').addClass('tblist');
Комментарии:
1. Это было предложено @Doozer Blake. Я пробовал, но это тоже не сработало.
Ответ №3:
Вероятно, вы могли бы сделать это с помощью просто:
$('#row-" response.Id " td").addClass('tblist');
Ответ №4:
Мне пришлось удалить существующий класс из td перед добавлением класса.
Я нашел ответ здесь.
Вот что у меня получилось.
$(rowId ' td').removeClass('tblistred').addClass('tblist');
Комментарии:
1. На самом деле, ваш вопрос был неточным: вы не только пытались добавить класс к ячейкам. Вы хотели удалить один и заменить его новым. Я рад, что это сработало 🙂
2. Да, это было. Я проголосовал за все ответы, поскольку они были правильными для вопроса, который я задал. Тем не менее, я хотел создать ответ, чтобы другие, оказавшиеся здесь, могли четко видеть решение.
3. Хорошо, но, пожалуйста, также обновите свой вопрос и ответ, поскольку часть вопроса раскрывается только в вашем ответе…