jquery triggerHandler多个参数

时间:2017-05-24 21:20:30

标签: jquery

根据jquery手册:

  

.triggerHandler(eventType [,extraParameters])

     

其中extraParameters是一个数组

如果我只传递了一个参数,但是如果我尝试传递多个参数则不起作用。只有第一个数组参数可用

	$('#test')
	
	.off('test_event')
	
	.on('test_event',function(event,parameters){
			console.log(parameters); // return 1 not array
		})
		
	.click(function(){
		$(this).triggerHandler('test_event',[1,2,3,4]);
	})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id = "test">
	test
</button>

2 个答案:

答案 0 :(得分:1)

点击处理程序中的参数数量需要与您传递的参数数量相匹配。触发正常点击事件时,所有参数都将是未定义的,但是当您触发它并传递数组时,这些值将被分成单独的参数。

$('#test')
  .off('test_event')
  .on('test_event', function(event, a, b, c, d) {
    console.log(a, b, c, d);
  })
  .click(function() {
    $(this).triggerHandler('test_event', [1, 2, 3, 4]);
  })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="test">
	test
</button>

答案 1 :(得分:0)

在单击处理程序中的数组中传递的元素被分离为独立的参数。因此,需要将它们分配给function()本身。数组中有四个元素,因此需要将四个变量传递给函数:

&#13;
&#13;
$('#test')
  .off('test_event')
  .on('test_event', function(event, a, b, c, d) {
    console.log(a, b, c, d);
  })
  .click(function() {
    $(this).triggerHandler('test_event', [1, 2, 3, 4]);
  })
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="test">
	test
</button>
&#13;
&#13;
&#13;

希望这有帮助! :)