Я немного новичок в jQuery.У меня проблемы с работой следующего кода, в частности кнопки сброса:
<script>
$(function()
{
$(document).ready(function()
{
$("input[type=checkbox][checked]").each(
function()
{
var cell = $(this).closest('td');
if($(this).attr('checked'))
{
cell.toggleClass('check');
}
});
});
$('#bay :checkbox').click(function()
{
var cell = $(this).closest('td');
cell.toggleClass('check');
}).change();
$('#reset').click(function()
{
$('#bay input[type=checkbox]').each(function()
{
var cell = $(this).closest('td');
if ($(this).is('checked'))
{
//alert("yes");
cell.addClass('check');
}
else
{
cell.removeClass('check');
//alert("no");
}
});
});
});
</script>
<input type="checkbox" checked>Blah
По какой-то причине, когда нажимается кнопка сброса, скрипт выполняет только оператор cell.addClass if.По сути, кнопка сброса действует как восстановление и должна удалять добавленный класс #check из каждого, если в HTML-коде нет атрибута по умолчанию.
Я пробовал неэффективный метод проверки флажков вводас проверенным атрибутом и без него, который нормально работал в FF и Chrome, но не работал в IE.Это будет работать, только если вы дважды нажмете кнопку сброса.
$('#reset').click(function()
{
$("input[type=checkbox][checked]").each(
function()
{
var cell = $(this).closest('td');
cell.addClass('check');
});
$("input[type=checkbox]:not([checked])").each(
function()
{
var cell = $(this).closest('td');
cell.removeClass('check');
});
});
Любая помощь будет принята с благодарностью!
Редактировать: Для каждого запроса приведен примерHTML-кода с рабочим (но НЕЭФФЕКТИВНЫМ) кодом jQuery http://jsfiddle.net/uxjCT/9/.
Edit2: * Я немного упростил часть кода "reset", но он все ещене будет работать в IE.Кто-нибудь знает, если это конкретно проблема IE, которая не может быть решена?По сути, я пытаюсь заставить функцию сброса сбросить к дефолтному атрибуту HTML «флажок» для входных флажков, которые имеют атрибут в HTML, наряду с таблицей стилей.IE - единственный виновник, который сейчас причиняет боль.
$('#reset').click(function(){
$('#bay input[type=checkbox]').each(function()
{
var attr = $(this).is("[checked]");
var cell = $(this).closest('td');
if (typeof attr !== 'undefined' && attr !== false)
{
alert("checked");
cell.addClass('check');
}
else
{
alert("unchecked");
cell.removeClass('check');
}
});
});
По какой-то причине var attr = $(this).is("[checked]");
не подхватит атрибут «флажок» в HTML, но поднимет, если флажок имеетотмечен, который может отличаться от атрибута HTML по умолчанию.
Опять же, любая помощь будет принята!
Код демонстрации: http://jsfiddle.net/uxjCT/55/