gpt4 book ai didi

javascript - 如何使 $(this) 从插件的函数参数内部访问

转载 作者:行者123 更新时间:2023-12-02 16:56:54 24 4
gpt4 key购买 nike

我正在编写一个 jQuery 插件,我需要一个用于 accept 事件的处理程序,因此我在插件的 opts 对象中创建了一个处理程序。该插件可以像下面这样调用:

$("#btn2").click(function(){
$("#dialog2").dialog("show", {
modal: false,
width: "500px",
onAccept: function() {
alert("Homepage changed.");
$("#dialog2").dialog("close"); // this one works
$(this).dialog("close"); // this one doesn't. $(this) is undefined...
// $(this) should be $("#dialog2") in this case.
}
});
});

在插件内部,有一些东西可以调用这个函数:

$.fn.dialog = function(command, options) {
var opts = $.extend({}, $.fn.dialog.defaults, options);
$(document).on("keydown", function(e) {
if(e.keyCode == 27 && opts.acceptEscape) { commandClose() }
if(e.keyCode == 13 && opts.acceptEnter) {
if(opts.onAccept != null) { opts.onAccept(); }
}
});
}

我应该如何调用此函数才能让 $(this) 在其中工作?

为了更好地理解我的问题,可以找到整个插件 here

最佳答案

您可以使用.call()/.apply()喜欢

//assuming here `this` refers tot the correct element
var self = this;
$(document).on("keydown", function (e) {
if (e.which== 27 && opts.acceptEscape) {
commandClose()
}
if (e.which== 13 && opts.acceptEnter) {
if (opts.onAccept != null) {
opts.onAccept.call(self);
}
}
});

注意:也可以使用event.which这是标准化值

关于javascript - 如何使 $(this) 从插件的函数参数内部访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26093396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com