0

同じドキュメント内の別の関数内で呼び出すことができるように、名前の下にこの「関数」を繰り返すか指定する最も簡単な方法を知りたいです->runThisFunction();

コード:

$('body').on("click", ".manufacturer_details_link", function (e) {
                e.preventDefault();

                var self = $(this);
                var id = self.data("id");

                var url = $("#manufacturers_table").data("infourl");

                var data_array = { 
                        id : id 
                    };

                ajaxCall(url, data_array, "rhs_info");

            }); 
4

2 に答える 2

2

すべてが正しいことを理解した場合:

function bodyOnClick( e, optionalId ) {
    var nodeRef = optionalId ? document.getElementById( optionalId ) : this;

    if( typeof e === 'object' )
        e.preventDefault();

    var self = $(this);
    var id = nodeRef.data("id");

    var url = $("#manufacturers_table").data("infourl");

    var data_array = { 
        id : id 
    };

    ajaxCall(url, data_array, "rhs_info");
}

// ---

$('body').on("click", ".manufacturer_details_link", bodyOnClick );

// ---

bodyOnClick( 'someNodeID' );

しかし実際には、HTMLElementを参照bodyOnClickしないため、plain を呼び出してもあまり意味がありません。したがって、他のイベントハンドラーでメソッドを再利用するか、明示的に呼び出す場合にのみ意味がありますthis

bodyOnClick.call( someNodeReference );

于 2013-06-22T00:41:27.743 に答える
0

こんな感じですか?

function someFunction(e){
    e.preventDefault();
    var id = $(this).data("id"),
        url = $("#manufacturers_table").data("infourl"),
        data_array = {id: id};
    ajaxCall(url, data_array, "rhs_info");
}
//$('.manufacturer_details_link').click(someFunction);

// changed, per feedback
$('.manufacturer_details_link').on('click', someFunction);
于 2013-06-22T00:41:56.833 に答える