2011-12-19 3 views
3

Я работаю над небольшим веб-приложением, где нажатие на один div (называть его элементом «A») необходимо изменить положение себя и другого div (называть его элемент «B») и наоборот.Вручную запускает событие jQuery click из события события другого объекта

Функциональность бы что-то вроде этого:

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 
} 

Я полагал, что я просто связать нажмите обработчики событий и А & B. Если A нажали я бы вручную вызвать событие щелчка B (используя .trigger JQuery в() и наоборот. К сожалению, ручное срабатывание события click для одного объекта из обработчика другого объекта не работает для меня - например, в приведенном выше примере, я не могу получить свойства pageX и pageY при запуске щелчка div B событие

Я привел пример, иллюстрирующий этот момент здесь: http://jsfiddle.net/tZFNk/2/.

Приветствия и благодарности за вашу помощь.

ответ

2

Запустите событие, используя свойства первого события 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!') 
}); 

http://jsfiddle.net/tZFNk/20/

6

Вы неправильно сформулировали слово «вопрос». Попробуйте:

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

вместо

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

Спасибо за собирание, что опечатка. Я исправил это и переключился на «.triggerHandler()», но pageX и pageY еще не определены ... –

+2

@AlR. это потому, что вы вызвали щелчок программно – Rafay

+0

Неправильный селектор не является реальной проблемой. @ 3nigma, у вас это есть! – nachito

1

кажется, свойства события не должны быть распространяющихся правильно, так как nachito уже определила в своем ответе. Тем не менее, вы не должны создавать и присваивать значения нового объекта, просто передать «е» объекта в функции триггера:

$('#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!') 
}); 
0
$(document).ready(function(){ 

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