gpt4 book ai didi

javascript - 有没有办法创建一个可以是单击事件或 onload 事件的函数,具体取决于主体的类?

转载 作者:行者123 更新时间:2023-12-02 19:13:57 27 4
gpt4 key购买 nike

基本上标题陈述了问题,但情况是这样的(很难用 jsbin 或其他任何东西复制,所以我将尝试在不这样做的情况下解决)。

我有一个单击按钮即可调用的函数。单击事件将告诉输出将使用什么字体。但是,在某些页面上,我希望字体由 body 元素的类声明,而不是通过单击按钮来声明。

我遇到了两个问题。

  1. 当我尝试传递参数并接收参数时,参数是一个事件,而不是我想要传递的任何内容。
  2. 如果我将事件作为第一个参数传递,并将我想要的字体作为第二个参数传递,则我的字体变量未定义,并且该函数不起作用。

以这种方式使函数变得灵活的任何帮助都会对我有很大帮助。

编辑:这是我所得到的简化版本

function fontSelection(font) {

var self = $(this),
inputOne = $('li:eq(0) input').val(),
inputTwo = $('li:eq(1) input').val(),
inputThree = $('li:eq(2) input').val(),
resultOne = $('div:eq(0)'),
resultTwo = $('div:eq(1)'),
resultThree = $('div:eq(2)');
font = font || $('div.font').attr('title').toLowerCase();

resultOne.removeClass().addClass(inputOne + ' someclass ' + font);
resultTwo.removeClass().addClass(inputTwo + ' someclass ' + font);
resultThree.removeClass().addClass(inputThree + ' someclass ' + font);

}

最佳答案

您不是直接将函数传递给事件注册,而是传递一个匿名函数,然后该函数使用所需的参数调用您的函数。

所以,而不是这样:

$("#myButton").click(callMyFunction);

您可以使用它来指定所需的确切参数:

$("#myButton").click(function(e) {
callMyFunction(myParam1, myParam2);
});

如果您想在函数中保留 this 的值,那么您需要像这样使用 .call() 在函数中显式设置它:

$("#myButton").click(function(e) {
fontSelection.call(this, myParam1, myParam2);
});

或者,只需将其作为参数传递,并在函数中使用该参数而不是 this:

$("#myButton").click(function(e) {
fontSelection(this, myParam1, myParam2);
});

关于javascript - 有没有办法创建一个可以是单击事件或 onload 事件的函数,具体取决于主体的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350333/

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