根据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>
答案 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()
本身。数组中有四个元素,因此需要将四个变量传递给函数:
$('#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;
希望这有帮助! :)