因为变量值改变了更新功能?

时间:2017-07-12 13:04:53

标签: javascript jquery function initialization

是否需要更新已更改变量的函数?我不知道如何正确解释这个问题,但我会在下面尝试一下。

我有一个.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');
}

因此,如果变量值发生变化,我是否必须更新或重新初始化我的函数? 因为它不适用于其中一个选择器。

感谢任何帮助或任何思考的食物。 :)

============= UPDATE =============

哦,它仍然没有像预期的那样发挥作用。

$(content).scroll(function() {
    console.log($(this));
}

如果变量(内容)的值发生变化,则不起作用。它仅适用于文档准备就绪时为此变量设置的值。

2 个答案:

答案 0 :(得分:1)

您不必更改函数中的任何内容,因为content事件发生时将会读取click的值。

只要content变量在代码库中的两个位置范围内定义,您所拥有的内容就绝对合适。

您应该注意content本身将是一个jQuery对象,因此您不需要在单击处理程序中再次包装它;只需content.animate({...即可。

答案 1 :(得分:0)

您已经将变量定义为选择器,因此无需编写$(内容),您可以在代码下面编写以正确执行。

if(viewportWidth < 768){
 content = $('.content-wrap');
 content.animate({scrollTop: target.offset().top}, 1000);
}else{
 content = $('html, body');
 content.animate({scrollTop: target.offset().top}, 1000);
}