Добавление нового элемента во время события `mousedown` предотвращает запуск события` click`?

0

Я работаю с событиями jquery, и я добавляю новый элемент во время mousedown в позиции указателя мыши, и после добавления элемента событие привязанного click не запускается.

Любое предложение заметно.

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

Мадху

Код:

<div style="border:1px solid">Click</div>
<span></span>
<div class="vis" style="display:none">Hello</div>
<script>
    var visualEle = $('div.vis');
    visualEle.css({border:"1px solid"});
    $('a').on("click", function (e) { e.preventDefault();});
    $('div').on("mousedown", mDown);
   $('div').on("mouseup",mUp);
    function mDown(e) {
        e.preventDefault();
        visualEle.css({ left: 100, top: 0, display: "block" });
        }

    function mUp(e) {

        e.preventDefault();
        $('span').append('mouse up triggerd<br/>');
        return false;
    }
    $('p').on("click",dClick);
    function dClick(e) {                
            $('span').append('double click triggerd<br/>');

    }
</script>

В приведенном выше коде событие click не запускается после завершения mousedown.

  • 0
    Причина в том, что событие click срабатывает, поэтому вам нужно, чтобы указатель мыши происходил в одном и том же элементе вверх и вниз, но поскольку вы перемещаете элемент div в координату мыши, событие mouseup будет инициировано для элемента div, поэтому событие click не будет получено. срабатывает ...
  • 0
    Если возможно, используйте вместо этого событие mouseup - jsfiddle.net/arunpjohny/2WcYB/6
Теги:
click
events
mousedown

1 ответ

0

согласно этому документу

Событие click отправляется элементу, когда указатель мыши находится над элементом, а кнопка мыши нажата и отпущена

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

возможное решение. Я могу придумать спасибо @ArunPJohny - это использовать $(this).trigger("click");

$('p').on("mousedown", function (e) {
    _x = e.pageX;
    _y = e.pageY;
    visualDiv.css({
        left: _x,
        top: _y
    });
    $(this).trigger("click");
});
$('p').on("click", function (e) {
    console.log(e.target)
});

Демо: http://jsfiddle.net/c5CRd/

  • 0
    Спасибо за обновление, но я все еще не получил его.
  • 0
    что ты не понял?

Ещё вопросы

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