我正在尝试创建一个函数,该函数将使用提供的参数并使该项目由sticky
代替fixed
(用于横幅)。我注意到,只要输入参数,它就只会显示为object Object
,而且似乎无法进行转换。
这是有问题的代码:
$(function() {
var containerIdName = 'div#stickyRemoval';
$(window).scroll(function(
var newContainerIdName = containerIdName;
alert(newContainerIdName);
var scrollHeight = $(document).height();
var scrollPosition = $(window).height() + $(window).scrollTop();
if ((scrollHeight - scrollPosition) / scrollHeight === 0) {
$(newContainerIdName).css({position: 'sticky'});
} else {
$(newContainerIdName).css({position: 'fixed'});
}
});
});
我已经输入了一个默认变量供您查看,但实际上它将通过CMS接收。如何转换该变量,以使我的newContainerIdName
变量显示为字符串而不是object Object
?
谢谢!
答案 0 :(得分:3)
问题是因为您无法将参数传递给事件处理程序。您在scroll
处理程序中引用的变量实际上是引发的Event对象-这就是为什么在将{<1}}强制转换为字符串时会看到它的原因。
要执行所需的操作,只需从处理程序函数中删除参数即可。还请注意,在下面的示例中,首选使用类来修改样式:
[Object object]
$(function() {
var containerIdName = 'div#stickyRemoval';
$(window).scroll(function() { // remove the argument here
var scrollHeight = $(document).height();
var scrollPosition = $(window).height() + $(window).scrollTop();
var calc = (scrollHeight - scrollPosition) / scrollHeight;
$(containerIdName).toggleClass('sticky', calc === 0).toggleClass('fixed', calc !== 0);
});
});