为点击创建一个jQuery函数

时间:2016-05-05 22:40:13

标签: jquery

我需要创建一个我可以用.on调用的函数("点击")

到目前为止,我有......

jQuery.fn.extend({
    createCase: function () {
            alert('smeg');
     } 
});

$("#results").on("click", ".cancel_case_btn").createCase();

所有这一切都是警惕' smeg'页面打开时,单击元素时不执行任何操作

3 个答案:

答案 0 :(得分:2)

为什么不简单地做这样的事情?

var createCase = function () {
  alert('smeg');
};


$("#results").on("click", ".cancel_case_btn", createCase);

答案 1 :(得分:2)

您需要委托元素上的click事件,以便在单击相应的项目后,您可以调用您创建的用于jquery对象的函数。

jQuery.fn.extend({
    createCase: function () {
            alert('smeg');
     } 
});

$("#results").on("click",".cancel_case_btn", function()
{
  $(this).createCase();
});

示例:https://jsfiddle.net/fvgLd018/3/

答案 2 :(得分:2)

你无法按照自己的想法去做。当您调用.on时,您必须传递一个函数作为最后一个参数来注册onclick事件的回调。

如果您愿意,仍然可以使用新函数扩展jquery,但是您需要在该函数中注册回调,如下所示:

jQuery.fn.extend({
    registerCreateCaseClickHandler: function () {
        $(this).on("click", function() {
            // do whatever you want
        }
        //register any other events you care about
    }
});

然后你会像这样使用它:

$("#results .cancel_case_btn").registerCreateCaseClickHandler();

当然,创建扩展程序实在是太过分了。定义createCase函数并将其作为回调传递给.on事件会更容易,如下所示:

function createCase() {
    var clickedButton = $(this);
    // do stuff
}

$("#results").on("click", ".cancel_case_btn", createCase);