从另一个对象内手动触发jQuery click事件';s点击事件

从另一个对象内手动触发jQuery click事件';s点击事件,jquery,event-handling,scope,Jquery,Event Handling,Scope,我正在开发一个小的web应用程序,点击一个div(称为element“a”)需要改变其自身和另一个div(称为element“B”)的位置,反之亦然 其功能如下所示: Click 'A' { A is moved some number of pixels closer to the mouse position (making use of jQuery's .pageX and .pageY event object properties) B's click event is ma

我正在开发一个小的web应用程序,点击一个div(称为element“a”)需要改变其自身和另一个div(称为element“B”)的位置,反之亦然

其功能如下所示:

Click 'A' {
  A is moved some number of pixels closer to the mouse position (making use of jQuery's .pageX and .pageY event object properties)
  B's click event is manually triggered, moving it some number of pixels closer to the mouse
}
我想我应该将点击事件处理程序绑定到A和B。如果A被点击,我将手动触发B的点击事件(使用jQuery的.trigger()不幸的是,从另一个对象的处理程序中手动触发一个对象的单击事件对我来说不起作用——例如,在上面的示例中,在触发div B的单击事件时,我无法检索pageX和pageY属性

我在这里提供了一个示例来说明这一点:

干杯并提前感谢您的帮助。

您将“问题”一词拼写错误。请尝试:

而不是

$('#aQestion').trigger('click');

你有打字错误


使用第一个事件的pageX和pageY属性触发事件

$('#aQuestion').bind('click', function(e, f){
    // Use the original pageX property if it exists, else use pageX set by triggered event.
    if (e.pageX !== undefined) {
        alert('x-pos: ' + e.pageX + ', y-pos: ' + e.pageY);
    } else {
        alert('x-pos: ' + f.pageX + ', y-pos: ' + f.pageY);
    }
});

$('#aDiv').bind('click',function(e){
    // Trigger event on #aQuestion with the current click coordinates.
    $('#aQuestion').trigger('click', { pageX: e.pageX, pageY: e.pageY });
    alert('Nothing happens!')
});

事件属性似乎没有正确传播,因为nachito已经在其响应中指出。但是,您不必构造新对象并为其赋值,只需在触发器函数中传递“e”对象即可:

$('#aQuestion').bind('click',function(e, evt){
    var pageX = e.pageX || evt.pageX;
    var pageY = e.pageY || evt.pageY;
    alert('x-pos: ' + pageX + ', y-pos: ' + pageY);
});

$('#aDiv').bind('click',function(e){
    $('#aQuestion').trigger('click', e);
    alert('Nothing happens!')
});

感谢您选择了这个输入错误。我更正了它并切换到“.triggerHandler()”,但是pageX和pageY仍然没有定义…@AlR。这是因为您通过编程触发了单击。选择器错误不是真正的问题。@3nigma,您找到了!
$("#aQuestion").trigger('click');
$('#aQuestion').bind('click', function(e, f){
    // Use the original pageX property if it exists, else use pageX set by triggered event.
    if (e.pageX !== undefined) {
        alert('x-pos: ' + e.pageX + ', y-pos: ' + e.pageY);
    } else {
        alert('x-pos: ' + f.pageX + ', y-pos: ' + f.pageY);
    }
});

$('#aDiv').bind('click',function(e){
    // Trigger event on #aQuestion with the current click coordinates.
    $('#aQuestion').trigger('click', { pageX: e.pageX, pageY: e.pageY });
    alert('Nothing happens!')
});
$('#aQuestion').bind('click',function(e, evt){
    var pageX = e.pageX || evt.pageX;
    var pageY = e.pageY || evt.pageY;
    alert('x-pos: ' + pageX + ', y-pos: ' + pageY);
});

$('#aDiv').bind('click',function(e){
    $('#aQuestion').trigger('click', e);
    alert('Nothing happens!')
});
    $(document).ready(function(){

        $("#button2").each(function(){
            var buttonOld = this;
            $('#button1').bind('click',function(){$(buttonOld).trigger('click')});
        })
    })