我是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方法?
答案 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的示例。