Как выделить событие нажатия флажка во внутреннем контейнере? - PullRequest
1 голос
/ 28 февраля 2011

У меня есть обзорный список с div, а также у каждого div есть пара, которая содержит все детали.Если вы нажмете на div «intro», детальная пара откроется, а вступление будет скрыто.У каждого элемента div есть флажок.И я столкнулся с проблемой: если я нажму флажок div «intro», подробный div будет открыт, потому что событие click также происходит и во вводном div.Я придумал решение, такое как использование внешнего диапазона, в котором я храню все открытые идентификаторы.

<div class="divIntroHolder" id="divIntroHolder15">
            <span class="spanChkHolder"><input type="checkbox" name="Nr" value="15" class="chkMessage" id="chkMessage15"/></span>

        </div>

        <div class="divDetailHolder" id="divDetailHolder15">
            <div class="divPicContainer">
                <span class="spanChkHolder"><input type="checkbox" name="Nr" value="15" class="chkMessage"/></span>
            </div>
        </div>

для этого у меня есть js как этот

$(document).ready(function () {
$(".divIntroHolder").click(function () {
    var id = getId($(this).attr("id"));
    if (!isOpen("spanOpenDivs", id)) { //check if the div is open or not
        addTo("spanOpenDivs", id); // add to span
        $(this).hide();
        $("#divDetailHolder" + id).show();
    } else {
        removeFrom("spanOpenDivs", id); //remove from the span
    }
});

$(".chkMessage").click(function () {
    var id = $(this).val();
    //prevent opening the detailed div
    if (!isOpen("spanOpenDivs", id))
        addTo("spanOpenDivs", id);

    var clicked = $(this);
    $(".chkMessage").each(function () {
        if ($(this).val() == id) {
            $(this).attr("checked", clicked.attr("checked"));
        }
    });
 });

});

Это делает js немного сложнее, и я предполагаю, что должен быть более простой способ выделить флажок щелчкомсобытие.Не имеет значения, если флажок установлен или не установлен, но он должен просто отфильтровывать событие щелчка.

Если у кого-то есть простое решение по этому вопросу, было бы очень признательно =)

1 Ответ

2 голосов
/ 28 февраля 2011
$(".chkMessage").click(function (evt) {
    evt.stopPropagation();
    ...
}

jQuery event.stopPropagation ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...