JQuery - проверять каждый ASP CheckBox для свойства Checked и fadeTo, если проверено

0

Это мой первый вопрос, поэтому, пожалуйста, дайте мне знать, если я сделал что-то неправильно. Во всяком случае, то, что я пытаюсь сделать, - по завершении документа - проверить, проверяются ли какие-либо флажки, а затем исчезать эти элементы абзаца, как указано в самом внутреннем коде ниже. Что касается кода, который действительно делает fadeTo, я знаю его правильно, потому что я использую его в другой части кода. И я знаю, что он нашел хотя бы один проверенный элемент, потому что я получил "предупреждение", показанное в приведенном ниже коде. Однако связанные элементы не исчезают. Какие-либо предложения?

Дополнительная информация: флажки корректно проверены (по остальной части моего приложения) в html, когда я смотрю на исходный код. Флажки - asp.net.

$(document).ready(function () {
    if ($("input[type='checkbox']:checked").length > 0) {
        $(this).closest('p').fadeTo('mid', '0.25')
        $(this).closest('p').children().fadeTo('mid', '0.25')
        $(this).closest('p').next().children('li').fadeTo('mid', '0.25')
        alert("It worked.")
    };
});
  • 0
    вам также нужно поделиться html
  • 0
    this относится к документу здесь! document не имеет p качестве предка
Теги:

2 ответа

4
Лучший ответ

Внутри обработчика dom dom this относится к объекту document.

Из того, что я вижу, вы пытаетесь настроить таргетинг на элемент-предок (p) отмеченных флажков и несколько других связанных с ним элементов.

Поэтому сначала вам нужно получить элементы p для которых вы можете использовать $("input[type='checkbox']:checked").closest('p') затем найти другие элементы по отношению к этим элементам.

$(document).ready(function () {
    var $ps = $("input[type='checkbox']:checked").closest('p');
    $ps.fadeTo('mid', '0.25')
    $ps.children().fadeTo('mid', '0.25')
    $ps.next().children('li').fadeTo('mid', '0.25')
});
  • 0
    выглядит достаточно справедливо +1
  • 0
    Я буду петь хвалу Аруну П Джонни с вершины горы! Как только это позволит мне, я отмечу ваш ответ как ответ.
0

Скорее всего, исходный код не проверял .length но вызвал .each() на множестве.

$(document).ready(function () {
    $("input[type='checkbox']:checked").each(function() { // only this line was altered
        $(this).closest('p').fadeTo('mid', '0.25')
        $(this).closest('p').children().fadeTo('mid', '0.25')
        $(this).closest('p').next().children('li').fadeTo('mid', '0.25')
        alert("It worked.")
    };
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню