【发布时间】:2017-07-12 13:04:52
【问题描述】:
是否有必要在已更改的变量上更新函数?我不知道如何正确解释这一点,但我会在下面尽力而为。
我有一个 .click() 函数,如果文档准备好,它会被初始化。这个函数内部是一个 .animate() 函数,它使用一个变量(var content)作为选择器。如果文档准备就绪,也会定义此变量。 (下面是代码的简化版本)
$('.selector').click(function () {
$(content).animate({
scrollTop: target.offset().top
}, 1000);
return false;
});
但是这个变量会根据视口宽度在两个值之间变化。 (下面是代码的简化版本)
if(viewportWidth < 768){
content = $('.content-wrap');
}else{
content = $('html, body');
}
所以如果变量值发生变化,我是否必须更新或重新初始化我的函数? 因为它不适用于其中一个选择器。
感谢您的帮助或任何思考。 :)
=============更新=============
好吧,它仍然没有像预期的那样工作。
$(content).scroll(function() {
console.log($(this));
}
如果变量(内容)的值发生了变化,这将不起作用。如果文档准备好了,它只适用于为此变量设置的值。
【问题讨论】:
-
但是如果用户手动调整窗口大小怎么办?最好检查这种情况下单击事件处理程序中的宽度
-
您需要在调整窗口大小时更新变量。或者更好的是,只需在动画之前调用按钮单击处理程序中更新变量的函数。
-
@charlietfl 是的,我知道。上面的代码被简化了。有一个 resize 函数可以改变变量。
-
@freedomn-m 见上面的评论。
-
您认为它们与使用变量时相同 :) 我认为它们与一个人说的“按现状使用此变量”不同,另一个人说“按原样使用此变量”在我需要的时候定义”。在第一种情况下,更改变量不会更新滚动处理程序分配,因为这已经发生了 - 这是更新中的滚动事件。第二种情况起作用,因为它使用点击时定义的变量。
标签: javascript jquery function initialization