Как выбрать "четных" родителей?

Я пытаюсь сделать оператор if, где, если родительский элемент кнопки является четным потомком своего родителя, сделать alert("it works");еще alert("nope");, это, наверное, что-то действительно легко, я действительно новичок в этом!:) Вот мой текущий код:

HTML:

<div>
    <div>
        <button>#0</button>
    </div>
    <div>
        <button>#1</button>
    </div>
    <div>
        <button>#2</button>
    </div>
    <div>
        <button>#3</button>
    </div>
</div>​

JS:

$(function () {
        $("button").click(function () {
            var $parent = $(this).parent();
            if ($parent.is(":even")) {
                alert("it works");
            } else {
                alert("nope");
            }
        });
});​

jsFiddle: http://jsfiddle.net/goldson/Rn6gz/1/

Заранее спасибо!

2 ответа

Решение

Вы можете использовать index(), чтобы получить индекс и использовать оператор по модулю. % знать, если это event или же odd,

Live Demo

$(function () {
    $("button").click(function () {
        var $parent = $(this).parent();
        if ($parent.index() % 2 == 0) {
            alert("it works");
        } else {
            alert("nope");
        }
    });
});​

Обходной путь - добавить классы к элементам четного div:

демонстрация

<div id="parentDiv">
    <div>
        <button>#0</button>
    </div>
    <div>
        <button>#1</button>
    </div>
    <div>
        <button>#2</button>
    </div>
    <div>
        <button>#3</button>
    </div>
</div>


$(function () {

    var arr = $('#parentDiv div');
    arr.filter(":even").addClass("even");

    $("button").click(function () {
        var $parent = $(this).parent();
        if ($parent.is(".even")) {
            alert("it works");
        } else {
            alert("nope");
        }
    });

});

Другие вопросы по тегам