1

私は、ajax投稿ページで使用する関数にパラメーターを渡そうとして本当に苦労しています。

これが、eventidが正常に表示する私のfancyboxスクリプトです。

var fancyContent = ('<div class="header">approve booking for event id'  + eventid + '<a href="#" class="approve" id="' + eventid + '">yes</a><a href="#" class="approve">no</a></div>');
$.fancybox({
    content: fancyContent
        });    

クリックしたリンクからイベントIDを取得

var getid = $('.approve').attr('id');

ここでのアラートはIDを正常に表示します

alert(getid);

次に、getidをパラメーターとして渡してクリック関数を開始します

$('.approve').click(function(calEvent, jsEvent, view, getid){

ここでの私のアラートは常に未定義です、何かアイデアはありますか?

alert(getid);
4

3 に答える 3

4

クリックされたアイテムのIDを取得するには、代わりにこれを試すことができます。

$('.approve').click(function() {
    var id = $(this).attr('id');
});
于 2012-12-31T11:54:38.010 に答える
3

イベントハンドラーにデータを渡したい場合は、次のtriggerメソッドを使用できます。

jQueryドキュメントから:

$("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"]);

$('.approve').trigger('click', [jsEvent, view, 'id'])
于 2012-12-31T11:59:29.943 に答える
1

あなたのラインで

$('.approve').click(function(calEvent, jsEvent, view, getid){

新しい関数を作成しています。この関数のパラメーターを定義し、他の関数宣言と同様に、ここでの変数の名前(、、calEventなどviewgetidはローカルです。ここで同じ名前を使用するということは、jQueryが同じ変数を関数に渡すという意味ではありません。つまり、この新しい関数のgetid 内部で使用する場合、関数の外部で使用する場合とはまったく異なりgetidます。

したがって、IDを取得するには、IDを再割り当てし、関数の外部で行ったのと同じトリックを再度実行する必要があります。

于 2012-12-31T11:57:49.050 に答える