0

あるクリック関数から別のクリック関数にデータを渡そうとしていますが、その作成方法がわかりません。私は複数のdivを持っていますが、2つのdivの主なアイデアを紹介します。

<div class="classname" id='prev'></div>
<div class="classname" id='next'></div>


$('#next).click(function() { 
   $('.classname').trigger('click')

})

$('#prev).click(function() { 
   $('.classname').trigger('click')

})


$('.classname').live('click', function () {
 [a lot of code here depending on who called click]


})

今、私はそのような変数を渡したいです(またはどういうわけかおなじみです

$('#prev').click(function() { 
   a = 1;
   $('.classname').trigger('click', a)

})


$('.classname').live('click', function (a) {
 if ( a == 1 ) { do something } else { do something else }
 [a lot of code here depending on who called click]

})

'a'変数をライブクリックに送信して、'a'変数の値に応じて異なる方法でバヘバさせるにはどうすればよいですか?

4

4 に答える 4

1

私はあなたがこれを探していると思います(デモを参照):

$('#prev').click(function () {
    $('.classname').trigger('click', [1])
});

$('.classname').live('click', function (event, param) {
    if (param == 1) {
        alert('do something');
    } else {
        alert('do something else');
    }
})​
于 2012-08-01T15:58:14.983 に答える
0

それはすでに可能です!サンプルコード:http ://api.jquery.com/trigger/

$("p").click( function (event, a, b) {
// when a normal click fires, a and b are undefined
// for a trigger like below a refers to "foo" and b refers to "bar"

} ).trigger("click", ["foo", "bar"]);

カスタムeventオブジェクトを作成して、その中にデータを送信することもできます。

var event = jQuery.Event("logged");
event.user = "foo";
event.pass = "bar";
$("body").trigger(event);

または、この代替手段を使用できます。

$("body").trigger({
    type:"logged",
    user:"foo",
    pass:"bar"
});
于 2012-08-01T15:59:18.270 に答える
0

申し訳ありませんが、あなたはこれを非常に複雑な方法で行っていると思います。2つのイベントハンドラーから共通の関数を呼び出します。呼び出すイベントハンドラーに応じて、異なる引数を使用します。.triggerと.liveを使用しないでください。

于 2012-08-01T16:04:03.740 に答える
0

あなたは非常に近かったので、イベントに渡される追加の引数は配列として表現する必要があります。

$('.classname').trigger('click', a)

になるはずだった

$('.classname').trigger('click', [a])

その後、そのイベントのハンドラーで追加の引数としてアクセスできます

$('.classname').live('click',function(e,a){
    // a is whatever was passed into the first element of the array above
})

実例: http: //jsfiddle.net/4KRFV/

于 2012-08-01T16:04:42.407 に答える