#jquery
#jquery
Вопрос:
У меня есть таблица с флажками в ней. и CSS для флажка — GridCheckBox, я хочу прочитать подсказку для флажков в массив с разделением.
Я использую эту функцию. Но это не приводит к получению отмеченных элементов. но получение непроверенных элементов правильно.
Это работает хорошо
var titles = [];
$('#ListGrid .GridCheckBox').each(function() {
if ($(this).attr('title')) {
titles.push($(this).attr('title'));
}
});
И это не работает (отмеченные элементы)
var titles = [];
$('#ListGrid .GridCheckBox:checked').each(function() {
if ($(this).attr('title')) {
titles.push($(this).attr('title'));
}
});
Комментарии:
1. какая версия jQuery, и, пожалуйста, покажите вашу HTML-разметку.
2. Опубликуйте HTML, который вы используете, или, если он длинный, создайте jsFiddle, пожалуйста
3. предполагая, что двойные кавычки в начале селектора являются опечаткой в вопросе, а не в вашем исходном коде, это должно работать нормально.
4. @Chad Пожалуйста, найдите разметку в sharetext.org/ACG9
5. в @fearofawhackplanet нет ошибки копирования-вставки … это исходный параметр titles = []; $(‘#ListGrid .GridCheckBox:проверено’).each(функция() { if ($(this).attr(‘title’)) { titles.push($(this).attr(‘title’)); } });
Ответ №1:
Ну, другой способ сделать это — использовать jQuery $.map () в этом примере я собираю все поля выбора по имени. Например:
var titles = $.map($("input[name='name_of_checkboxes']:checked"),function(a){return a.title;});
Shuld возвращает массив с заголовками selected — поле выбора.
Редактировать
Чтобы не получить ни одного выбранного флажка, вы можете использовать это
var not_selected = $.map($("input[name='name_of_checkboxes']:not(:checked)"),function(a){return a.title;});
HTML:
<input type="checkbox" name="name_of_checkboxes" checked="checked" title="1" />
<input type="checkbox" name="name_of_checkboxes" title="2" />
<input type="checkbox" name="name_of_checkboxes" checked="checked" title="3" />
<input type="checkbox" name="name_of_checkboxes" title="4"/>
Больше n нет
Ответ №2:
Из-за того, что это не работает. Класс «.GridCheckBox», к которому вы применены, находится в родительском «диапазоне», а не в самом «вводе флажка»!
вы можете сделать это, хотя:
$('#ListGrid .GridCheckBox').each(function() {
var target = $(this);
if (target.find("input:checkbox").is(":checked")) {
titles.push(target.attr('title'));
}});
предполагая, что один span.GridCheckBox содержит только один ввод флажка.
Комментарии:
1. да, это сработало. спасибо ‘code’ var titles = []; $(‘#ListGrid .GridCheckBox’).each(функция() { var target = $(this); if (target.find(«ввод: флажок»).is(«:проверено»)) { titles.push($(this).attr(‘заголовок’)); } }); // тревога (титры. toString()); если (заголовки. длина > 0) { $(«#SelectedEmployeeIds»).val(titles.join(‘,’)); } ‘код’
Ответ №3:
Чтобы попытаться устранить любые ошибки, а также повысить производительность, попробуйте вместо этого следующее:
$('#ListGrid .GridCheckBox').filter(':checked').each( ..
Поскольку :checked
это расширение jQuery, оно работает не так хорошо, как собственные методы браузера для сопоставления объектов.
Комментарии:
1. это не работает $ (‘#ListGrid .GridCheckBox’).filter(‘: проверено’).each(функция() { if ($(this).attr(‘title’)) { titles.push($(this).attr(‘title’))); } }); оповещение (titles. toString()); выводится пустым