Возможно ли принудительно выполнить .click () для всех элементов, даже тех, которые находятся внизу? - PullRequest
1 голос
/ 19 сентября 2010

Рассмотрим этот код :

HTML:

<div class='a'>a</div>
<div class='b'>b</div>
<div id='log'></div>

CSS:

.a, .b {
    width: 100px;
    height: 100px;
    border: 1px solid black;
    position: absolute;
    text-align: right;
}
.a {
    left: 100px;
    top: 100px;
}
.b {
    left: 150px;
    top: 150px;
}

JS:

$('*').click(function(e) {
    log(this.nodeName + ' ' + this.className);
});

function log(s) {
    $('#log').append(s + '<br />');
}

Если щелкнуть пересечение, .click() для .a не вызывается.

Существует ли какой-либо встроенный метод для принудительного выполнения click() для всех элементов, а не только для верхнего элемента и его родителей, или я должен реализовать это сам?

1 Ответ

1 голос
/ 19 сентября 2010

Я думаю, что поведение, которое вы наблюдаете, правильное. При нажатии на самый верхний элемент один ниже не получит событие щелчка, несмотря на то, что он находится в области «щелкнул». В качестве обходного пути вы можете вручную вызвать событие клика: $('.a').click().

Вызов click без аргументов эквивалентен trigger('click'), который вызывает указанное событие. Дополнительную информацию можно найти в разделе справки по триггеру .

...