2014-01-06 3 views
0

Привет У меня есть функция JQuery, которая идет как этотJQuery двойное исполнение одного щелчка мыши

$(".btn").click(function(e){ 
alert("hello"); 
}); 

По какой-то причине он дает два предупреждения. Это связано с другим сценарием в плагине, который я использую (узнал, когда я отключил плагин). В моем сценарии я попытался отвязать его, что не дает мне никаких проблем. Я также использовал e.stopPropogation(), который работает, но затем убивает функцию плагина. Есть ли способ разрешить функции плагина запускать курс, а затем для моей функции только один раз.

Заранее спасибо.

+1

У вас есть jsfiddle? –

+0

Вы можете сделать это, используя пространство имен для события щелчка вашего плагина, тем самым вызывая щелчок на компонентах плагина в другом пространстве имен и выполняя событие щелчка, упомянутое выше, в другом пространстве имен, предотвращающем любые столкновения. – Rohan

+0

Можете ли вы разместить дополнительную информацию, такую ​​как ваш html-код, плагины, которые вы используете. – Marko

ответ

1

Я проверил вашу скрипку и я нахожу это беда была причина в DIV с data-uk-button-radio, то uikit.min.js связать событие щелчка на дивы с data-uk-button-radio, который будет запускать все события нажатия детей Div в.

Таким образом, используя event, чтобы судить, будет ли это действие click от мыши или скрипта, это решит это.

Как это:

(function(){ 
$(".uk-button").click(function(event) { 
if(event.originalEvent)//only event from mouse has this property 
    alert("hello"); 
    // Do something 
}); 
})(jQuery) 

fiddle here.

+0

Привет, спасибо, это, похоже, решило проблему :), большое спасибо! Еще один вопрос относительно вашего ответа. Если бы (event.originalEvent) тоже работал для касаний, или мне нужно было бы добавить что-то вроде этого if (event.orginalEvent && event.originalEvent.touches) – Ant

+0

@Ant Я плохо разбираюсь в мобильных jquery, но я думаю, if (event.originalEvent) 'будет работать и для касаний, а если нет, вы можете найти уникальное свойство' event' в трофеях или скриптовом триггере, отлаживая две ситуации, должно быть, некоторые свойства могут работать. – jarvanJiang

0

попробовать это: на основе вашей скрипки

$(".uk-button").bind('click.uniqueEvent', function(event) { 
    event.stopPropagation(); 


    alert("hello"); 
    // Do something 
}); 

Затем, когда вы хотите, чтобы отвязать это конкретное событие. вы можете просто сделать:

unbind(".uniqueEvent") 
+0

Привет, я попробовал это, но он перестает работать с функциями плагина. Все еще пытаюсь прочитать в пространстве имен, чтобы узнать, есть ли что-то, чтобы исправить это. Спасибо за ваше предложение. – Ant

Смежные вопросы