在javascript / jQuery中将函数作为函数调用

时间:2013-06-22 00:36:10

标签: javascript jquery

我想知道下面最重要的方法是重复或在名称下面给出这个“功能”,以便我可以在同一文档中的另一个函数中调用它 - > 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");

            }); 

2 个答案:

答案 0 :(得分: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' );

但实际上,调用bodyOnClick plain没有多大意义,因为this不会引用任何 HTMLElement 。因此,只有在其他事件处理程序上重用该方法或明确地将其称为

时才有意义。
bodyOnClick.call( someNodeReference );

<击>

答案 1 :(得分: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);