var scrollheight=$('#scrollbox').attr('scrollHeight');
我想在不使用jquery的情况下执行上述操作。我发现我可以使用knockoutjs元素绑定 - data-bind="element: scrollbox"
但我不知道该怎么做
答案 0 :(得分:1)
我想说,从阅读你的评论来看,KnockOutJS并不是你在滚动时处理ajax的最佳候选者。
This question处理window.scroll(...)
功能并进行ajax
来电。
答案 1 :(得分:0)
Afaik,ko没有自己的内置元素绑定。我在一些项目中创建了一个,看起来像这样:
ko.bindingHandlers.element = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var name = ko.utils.unwrapObservable(valueAccessor());
viewModel[name] = element;
}
};
但是,绑定时,我将viewmodel属性名称放在引号中,类似于data-bind="element: 'elementName'"
。视图模型看起来像这样:
function MyViewModel() {
var self = this;
self.elementName = undefined;
self.doSomething = function() {
$(self.elementName).fadeOut();
};
}
请注意,self.elementName
将在undefined
执行后保持ko.applyBindings
。所以你应该只在点击或其他事件绑定中使用它,这些绑定在绑定viewmodel之后作为函数执行。
答案 2 :(得分:0)
添加自定义绑定
ko.bindingHandlers.scrollTo = {
init: function(element, valueAccessor) {
jQuery(element).show().focus();
if (jQuery(element).position() != null) {
jQuery(window).scrollTop(jQuery(element).position().top);
}
}
};
并在HTML中使用它:
data-bind="scrollTo: {}