Наблюдение за щелчком ajax-кода проверяет элементы по порядку - PullRequest
0 голосов
/ 27 января 2012

У меня есть проблема, когда мне нужно, чтобы документ наблюдал за функцией щелчка (или чем-то подобным), чтобы получить элементы в порядке от дочернего элемента.Причина в том, что я хочу иметь e.stopPropagation () для дочернего элемента, но родитель вызывает в любом случае, потому что он первый в строке.

Например:

   <script type="text/javascript"> 
    document.observe('click', function(e, el) {  
        if (el = e.findElement('.parent a')) { 
            e.stopPropagation();
        }
        if (el = e.findElement('.parent')){ 
            alert('parent');
        }
    });
    </script> 
    <div class="parent">
        <a href="test.html" target="_blank">Child Click Function</a>
        Parent Click Function
    </div>

В этом примере сначала обнаруживается родитель, поэтому вызывается предупреждение.причина, по которой я должен сделать это таким образом, а не element.observer, заключается в том, что его сгенерированный Ajax контент и Prototype, по-видимому, не имеют функции live (), такой как jQuery.

У кого-нибудь есть обходной путь для этого?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 января 2012

Вы наблюдаете за «документом», текущая цель вашего мероприятия - документ.

'. Parent a' и '.parent' существуют в вашем документе, поэтому el.findElement ('. Parent a') и e.findElement ('. Parent') всегда будут возвращать элемент.

.parent не найден первым в вашем скрипте, но вы не останавливаете процесс (или не используете оператор if / else), когда вводите свой первый if.Итак, процесс продолжается, и скрипт находит элемент .parent в документе.

Можете ли вы объяснить, что вы пытаетесь сделать?Почему вы хотите, чтобы событие прекратило пузыриться?

btw: 1) el не определено в вашем скрипте.2) вы используете «=», а не «==» в своем скрипте, когда используете findElement ();

0 голосов
/ 27 января 2012

Прототип определенно имеет .live() эквивалент, и он называется Event.on(). Он также работает как метод экземпляра, Element#on().

document.on('click', '.parent', function(event, element) {
    if (!event.findElement('.parent a')) {
        alert('parent');
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...