Функция onmouseenter и click не работает вместе

Я использую Meteorjs для моего приложения. Здесь я застрял в проблеме. У меня есть якорный тег. Я должен функции, которые я призвал onmouseenter а также click событие. Что я сделал, если пользователь click в теге привязки открылось диалоговое окно с приглашением bootbox для редактирования текста тега привязки. и если пользователь 'mouseenter` на теге привязки и остается там в течение 3 секунд, то вызывается функция, которая отображает всплывающее окно начальной загрузки. Моя проблема, если я нажимаю на тег привязки и остаюсь там в течение трех всплывающих окон, и он скрывает диалоговое окно начальной загрузки, которое было открыто при событии щелчка тега привязки.
Мой код
Функция вызывается, когда мышь вводится в элемент.

'mouseenter .edit_name': function (evt, tgt) {
    timer = setTimeout( function() {
            var id=$(evt.currentTarget).data("pk");
            $("#edit_name_"+id).popover({title:"Objective" ,content:Objective})
            $("#edit_name_"+id).popover("show")
            }, 1500);
    }
    },  

Мышь оставить функцию

'mouseleave .edit_name': function (evt, tgt) {
    $(evt.currentTarget).data("pk");
    $("#edit_name_"+id).popover("hide")
    clearTimeout(timer);
},

Функция вызывается по клику

'click .edit_name': function (evt, tgt) {
    bootbox.prompt("Module Name",function(arg1,arg2){
}
},

Но когда я нажимаю на элемент и остаюсь там в течение 3 секунд, приглашение bootbox исчезает, и отображается popover. Скажите мне, Гас, как я могу остановить отображение поповера, если я нажму на элемент.

РЕДАКТИРОВАТЬ:
Вместо bootbox.prompt я попробовал это с bootstrap.editable.js, как это

$(".edit_name").editable({
    inputClass: 'input-large',
    url: function (params) {
        Meteor.call("renameItem", params.pk, params.value);

    }
});

но все та же проблема. при отображении всплывающих окон скрывается поле ввода.editable.

1 ответ

Просто проверьте, существует ли загрузочная коробка в вашем setTimeout функция. Если загрузочный ящик существует, не запускайте всплывающий код.

"mouseenter .edit_name": function () {
  timer = setTimeout( function() {
    if ( !$(".bootbox").length ) {
      $(".edit_name").popover( { title: "Objective", content: Objective } );
      $(".edit_name").popover("show");
    }
  }, 1500);
}
Другие вопросы по тегам