1

我创建了一个自定义变量/函数,我在单击元素时尝试执行该变量/函数。出于某种原因,它决定显示 onload 并忽略 .click()。我已经花了一段时间试图弄清楚这一点,但我运气不佳。

这是我的自定义函数:

var movebox = function (entry) {
    $imagebox.css('left' , '0');
    $('#wr').append(entry);
};

我试图这样称呼它,但是当页面加载时它会调用它。

$l3.click(movebox('test'));
4

2 回答 2

4

您正在立即调用 movebox 函数,而不是将该函数作为对 click 事件处理程序的引用。这是 JavaScript 中的常见错误。相反,将您的函数传入匿名函数内部,如下所示:

$l3.click(function() { 
    movebox('test');
});

顺便说一句,setTimeout、setInterval、addEventListener 和臭名昭著的 eval 经常犯同样的错误。请记住,当将函数视为另一个函数的参数时,请务必将它们包装在匿名函数中。

于 2013-05-16T03:11:22.937 回答
0

您正在调用moveboxthen 将返回的值传递给 click 事件处理程序,在这种情况下,您可以使用.on()事件注册助手将data元素传递给可以使用事件对象访问的事件处理程序。

尝试

 var movebox = function (e) {
    $imagebox.css('left' , '0');
    $('#wr').append(e.data.entry);
    };

$l3.on('click',{ entry: 'test'}, movebox);
于 2013-05-16T03:11:10.320 回答