2014-11-06 10 views
0

В mousemove события:`mousemove` и запуск пользовательского события

$(document).on('mousemove', function(e){ 
    console.log(e.pageX); 
    console.log(e.pageY); 
}); 

, как вы можете видеть, мы можем использовать pageX и pageY, чтобы получить x и y координаты положения курсора мыши. Но, я хочу, чтобы запустить собственное событие на mousemove и хотел бы получить значения pageX и pageY в этом пользовательском событии. Чтобы быть более ясным, что я хотел бы сделать, это:

$(document).on('mousemove', function(){ 
    $(document).trigger('myevent'); 
}); 

$(document).on('myevent', function(e){ 
    // console.log(e.pageX); 
    // console.log(e.pageY); 
}); 

Есть ли способ, чтобы получить доступ к этим pageX и pageY в myevent?

ответ

3

.trigger() позволяет передавать дополнительные данные через свои аргументы. Вы можете позвонить

$(document).on('mousemove', function(event){ 
    $(document).trigger('myevent', event); 
}); 

Теперь у вас есть доступ ко всему объекту оригинальный event в пользовательском коде события.

1

Другой вариант заключается в создании пользовательского события, как

$(document).on('mousemove', function(e) { 
 
    var event = $.Event('myevent', { 
 
    pageX: e.pageX, 
 
    pageY: e.pageY 
 
    }); 
 
    $(document).trigger(event); 
 
}); 
 

 
$(document).on('myevent', function(e) { 
 
    log(e.pageX + ':' + e.pageY) 
 
}); 
 

 
var log = function(message) { 
 
    var $log = $('#log'); 
 
    $log.html(message) 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="log"></div>

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