нажатие на экран нежелательно инициирует функцию для сложенных элементов / селекторов

0

В настоящее время я работаю над цикле изображений, который охватывает всю страницу + некоторые кнопки навигации (prev, next и pause/resume). Я хочу сделать следующее: Функция паузы должна быть инициирована, когда я нажимаю кнопку паузы (#pause), но также когда я нажимаю изображение (#background_cycler), независимо от того, где. Таким образом, основная страница должна инициировать эту функцию (изображение охватывает всю страницу!)

Во-первых, html

<body>
    <p id="info">PRESS LOGO TO ENTER</p>

    <div id="background_cycler">
        <div id="bg_images">
        <img class="bg active" src="images/image1.jpg" alt="" />
        <img class="bg" src="images/image2.jpg" alt="" />
        <img class="bg" src="images/image3.jpg" alt="" />
        <img class="bg" src="images/image4.jpg" alt="" />
        </div>

        <p id="controls">
            <span id="pause">PAUSE</span>
            <span id="prev">PREV</span>
            <span id="next">NEXT</span>
        </p>
    </div>
...

и javascript

$('#pause, #background_cycler').click(function pause() {});
...

Когда я нажимаю изображение, все работает отлично. Когда я нажимаю кнопку паузы, все происходит не по плану. Изучив функцию паузы, я могу только сделать вывод, что когда я нажимаю кнопку паузы, я на самом деле также щелкаю изображение и, следовательно, запускаю функцию дважды (для обоих идентификаторов). Это возможно? И как получилось? Похоже, что когда я заменяю #pause на #info как селектор, щелчок по соответствующему p-тегу делает трюк.

благодаря

  • 0
    Можете ли вы дать нам больше кода? Похоже, что может быть проблема области видимости .....
  • 0
    Не видя некоторой разметки и дополнительного кода, мы не могли бы спекулировать.
Показать ещё 1 комментарий
Теги:
jquery-selectors

1 ответ

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

Вам нужно остановить пузырьки щелчка

$('#pause, #background_cycler').click(function (e) {
    e.stopPropagation();
});

Более подробную информацию можно найти здесь http://api.jquery.com/event.stoppropagation/

Если вы не прекратите пузыриться, когда вы нажмете на паузу, это в конечном итоге вызовет щелчок на циклере.

Ещё вопросы

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