执行作为参数传递给jquery函数的方法

时间:2011-10-10 15:05:22

标签: jquery

我是jQuery世界的新手,对不起,如果这是一个非常基本的问题。我有一个jQuery函数来动态创建按钮:

function createButton(element, id, caption, leftPosition) {
    if (element == null || element.length < 1) return;

    var buttonTable = $("<table id='" + id + "'>");    
    buttonTable.addClass("togglebtn");
    buttonTable.css("left", left);

    var trow = $("<tr>");
    $("<td>")
        .text(cellText)
        .data("buttonname", caption)
        .click(function () {
            //alert("Clicked Col=" + $(this).data("buttonname"));
            TestButtonClick();
        })
        .appendTo(trow);
    trow.appendTo(buttonTable);
    buttonTable.appendTo(element);
}

由于这是创建按钮的一般方法,我想向其添加一个click事件,以便调用程序可以在click事件上执行它自己的方法。我的意思是我想将客户端方法名称作为参数传递给createButton方法,该方法最终应该在点击时执行。如何做以及如何使用该参数调用createButton方法?

2 个答案:

答案 0 :(得分:2)

很抱歉,如果没有足够的尝试,发布这个问题对我来说真的很愚蠢。我得到了答案。这是我做的:

function createButton(element, id, caption, leftPosition, callbackfunction) {
//do something
callbackfunction();
}

致电计划:

createButton($("#tbl"), "btnSave", "Save", "100px", function () { TestButtonClick() });

答案 1 :(得分:1)

看起来我对你的问题读得太过分了。我以为你也想把一个参数传递给事件处理程序。我的回答仍然有效,它只是做了一点点。


您可以使用call方法调用具有特定参数的其他方法。您还可以将函数作为参数传递给另一个函数。像这样:

function createButton(element, id, caption, leftPosition, clickHandler) {
    // your stuff
    .click(function() {
        clickHandler.call(this, yourParam);
    })
    // the rest of your stuff
}

function onClick(aParam) {
    console.log(this);
    console.log(aParam);
}

createButton($("<element/>"), "id", "caption", "leftPos", onClick);

以下是fiddle的示例。