2017-05-24 7 views
0

jQueryのマニュアルによると:私は唯一のパラメータに合格した場合extraParametersが配列jqueryのtriggerHandler複数のパラメータ

ある

.triggerHandler(eventTypeを【、extraParameters])

私が複数のパラメータを渡そうとするとうまくいきません。配列の最初のパラメータだけが利用可能であるクリックハンドラ内の配列で渡さ

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

答えて

0

要素は、独立したパラメータに分離されています。そのため、それらはfunction()自体に割り当てられる必要があります。あなたは、配列の4つの要素を持っているので、あなたは、関数に4つの変数を渡す必要があります:

$('#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"> 
 
\t test 
 
</button>

ホープ、このことができます! :)

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"> 
 
\t test 
 
</button>

+0

彼が最初にされているので、私は@Obsidians答えを受け入れている()(30秒前) – MTK

関連する問題