Подтвердить что ты не робот

JQuery событие пузырится на кнопку не работает, как ожидалось в Firefox

У меня есть элемент <button>, внутри которого у меня есть 2 <span> элемента. У меня есть два прикрепленных обработчика событий jquery click для каждого из элементов span, поэтому я могу делать все, что мне нравится, для каждого клика. Вот быстрый взгляд на базовый код:

HTML

<button>
    <span>Text1</span>
    <span>Text2</span>
</button>

Javascript

$(function() {
    $('button').bind('click', function() {
        console.log('button clicked');
    });
    $('button > span:eq(0)').bind('click', function() {
        console.log('text1 span clicked');
    });
    $('button > span:eq(1)').bind('click', function() {
        console.log('text2 span clicked');
    });
});

Все работает отлично в Chrome, и событие click зафиксировано в правильном порядке: сначала на любом из элементов span, а затем событие пузырится до элемента родительской кнопки.

Проблема заключается в том, что в Firefox событие click не срабатывает ни для одного из элементов span, только обработчик событий кнопки регистрирует событие как запущенное.

Вот скрипка, чтобы вы могли видеть, что я имею в виду: http://jsfiddle.net/spider/RGL7a/2/

Спасибо

4b9b3361

Ответ 1

Простым решением было бы использовать элемент <div> вместо элемента кнопки. Поместите общий код, который вы хотите включить в функцию, а затем выполните функцию, когда щелкнут любой из интервалов, а также уникальный код диапазона. Если вы хотите быть более совместимым с 508, вы можете сделать прописные части тегами <a> (или даже тегами <button>.

Очевидно, что это не объясняет обработку событий FF, но это может быть более быстрый способ.

Ответ 2

Попробуйте изменить

    <button> to <button type="button">

Это должно решить вашу проблему с места в карьер. Причина, по которой он не работает, заключается в том, что он выполняет следующие действия с действием по умолчанию кнопки, которая должна быть отправлена. т.е. BUTTON понадобится вернуть false в javascript, чтобы он читал ваш клик. Так же, как если бы вы попытались щелкнуть ссылку, не установив ее действие по умолчанию для возврата false.

Если вы добавите следующую строку кода jQuery в js, это также должно решить вашу проблему. Обязательно добавьте код перед нажатием кнопки > span click bind.

     <script type="text/javascript">
        $(function() {
            $('button').click(function(){
                 return false
            });
        });
     </script>          

Надеюсь, что это поможет.

-D