2013-03-10 15 views
9

Con jQuery 1.9.1 gli argomenti non vengono passati da un trigger al gestore dei clic, poiché con jquery 1.7.2 vengono passati piacevolmente.jquery 1.9.1 .trigger() non passa argomenti a click-handler

Un esempio per dimostrare:

<!doctype html> 
<head> 
     <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
     <!--script src="http://code.jquery.com/jquery-1.7.2.min.js"></script--> 
</head> 
<body> 
    <input id="test" type="checkbox"> 
    <button id='trigger'>trigger</button> 

</body> 
    <script> 
     $('#test').bind('click', 
      function (e, data){ 
       if (typeof data == 'undefined') { 
        alert('no data passed'); 
        return; 
       } 
       alert('first passed=' + data.passed1 + ' second passed='+data.passed2); 
      }); 

     $('#trigger').click(
      function (e){ 
       $('#test').trigger('click',{passed1:'first',passed2:'second'}); 

     }); 
    </script> 
</html> 

Quando uso jquery-1.7.2.js funziona ancora bene.

Cosa mi manca? Mi aiuti per favore.

+0

Perché stai chiudendo 'body' prima del' script' ?? – kapa

+0

Nessuna delle sintassi sembra funzionare dopo il test, sembra un bug. –

+1

Sembra uno strano bug. http://jsfiddle.net/xHVDx/1/ – kapa

risposta

7

E 'un problema noto: http://bugs.jquery.com/ticket/13353

soluzione alternativa è quella di utilizzare .triggerHandler() invece che ad esempio:

$('#trigger').click(function (e) { 
    var $test = $('#test');  
    $test 
     .prop('checked', !$test.prop('checked')) 
     .triggerHandler('click',{passed1:'first',passed2:'second'});   
}); 

JSFiddle: http://jsfiddle.net/antishok/xHVDx/2

Attivazione click è il male in ogni caso (se l'intenzione è solo per eseguire la richiamata)

+3

Echoing @antishok: non attivare i clic in questo modo. Separa il codice del gestore nella sua funzione e chiamalo direttamente. –