我创建了一个自定义变量/函数,我在单击某个元素时尝试执行该函数。出于某种原因,它决定显示onload并忽略.click()。我花了一段时间试图解决这个问题,但我没有太多运气。
这是我的自定义功能:
var movebox = function (entry) {
$imagebox.css('left' , '0');
$('#wr').append(entry);
};
我试图像这样调用它,但是当页面加载时它会调用它。
$l3.click(movebox('test'));
答案 0 :(得分:4)
您正在立即调用movebox函数,而不是将该函数作为对click事件处理程序的引用传递。这是JavaScript中的常见错误。相反,将函数传递给匿名函数,如下所示:
$l3.click(function() {
movebox('test');
});
另外,使用setTimeout,setInterval,addEventListener和臭名昭着的eval经常犯同样的错误。请记住,在将函数视为另一个函数的参数时,请确保将它们包装在匿名函数中。
答案 1 :(得分:0)
您正在调用movebox
,然后将返回的值传递给click事件处理程序,在这种情况下,您可以使用.on()事件注册帮助程序将data
元素传递给事件处理程序可以使用事件对象访问。
尝试
var movebox = function (e) {
$imagebox.css('left' , '0');
$('#wr').append(e.data.entry);
};
$l3.on('click',{ entry: 'test'}, movebox);