【问题标题】:How to pass an object as parameter to an onClick function using Jquery如何使用 Jquery 将对象作为参数传递给 onClick 函数
【发布时间】:2025-12-13 14:30:04
【问题描述】:

我有一个需要传递给函数的对象,该函数是通过onClickonKeyUp() 触发的,但我无法使其工作。
虽然我可以给它传值。

function myFunc(myObj) {

 $("<button type="button" onclick='otherFunction( $(\"#elem\").val() )'
onkeyup='otherFunction( $(\"#elem\").val() )'> CLICK IT </button>"
} 

如您所见,我有一个otherFunction,我可以将$("#elem").val() 作为参数传递。但我还需要将myObj 传递给它。
尝试了我能想到的一切,但我无法让它发挥作用。

Obs:myObj 是来自 googleMaps 的标记,所以我不能只传递它的属性值。我需要访问我的第二个函数的完整对象。 因为我需要做类似的事情:myObj.setOptions(.....)

【问题讨论】:

  • 我觉得你的剧本不合适所以如果你写清楚我可以帮助你。
  • @pankaj98 不知道该怎么做。这是一个javascript函数,它使用jquery创建一个带有onclickonkeyup的按钮。而且我很难传递参数,因为它是一个对象,而不仅仅是一个字符串。

标签: javascript jquery parameter-passing


【解决方案1】:

当您使用 jQuery 创建按钮时,请使用 .on() 绑定事件处理程序。由于closure,对象myObj将在事件处理程序中可访问

function myFunc(myObj) {
    var button = $('<button>', {
            "type": "button",
            "text": "CLICK IT"
        }).on('click keyup', function () {
            // myObj will be accessible here
            otherFunction($("#elem").val());
        });
}

很好的阅读How do JavaScript closures work?

【讨论】:

  • 我通常可以将myObj 传递给函数吗?喜欢:otherFunction($("#elem").val(), myObj);
  • 太棒了!我只是在使用appendTo() 将其附加到另一个对象时遇到了一些麻烦。是否可以做类似button.appendTo($('myDiv')); 的事情?
  • @PlayHardGoPro,是的,伙计,只要你有一个myDiv 元素
【解决方案2】:

这段代码解释了如何使用 jQuery 向处理程序发送数据

$('yourElement').click(yourData, function(eventObject){
    var thisIsYourData = eventObject.data;
})

【讨论】: