В настоящее время я работаю над цикле изображений, который охватывает всю страницу + некоторые кнопки навигации (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-тегу делает трюк.
благодаря
Вам нужно остановить пузырьки щелчка
$('#pause, #background_cycler').click(function (e) {
e.stopPropagation();
});
Более подробную информацию можно найти здесь http://api.jquery.com/event.stoppropagation/
Если вы не прекратите пузыриться, когда вы нажмете на паузу, это в конечном итоге вызовет щелчок на циклере.