在页面加载时调用的淘汰 JS 鼠标悬停事件
Knockout JS mouseover event being called on pageload
我有一个鼠标悬停事件通过挖空附加到一堆输入。由于输入位于 ko foreach 块中,因此正在创建其中的许多内容,并且在页面加载时,将为页面上添加的每个输入调用 mouseover 事件。这使我的页面加载速度很慢。知道为什么在页面加载时调用该事件吗?
<!-- ko foreach: FilteredForecasts -->
<td>
<input class="tiny" type="number" min="0" max="80" data-bind="disable: Elapsed() || (!$parent.ResourceId() || $parent.EditingName()), value: Hours, css: { 'pending': Pending, 'saved': !Pending() && Hours() && !Elapsed(), 'highlighted': Highlighted, 'elapsed': Elapsed }, attr: { id: 'h_' + $index(), title: (!$parent.ResourceId() || $parent.EditingName() ? 'You must first save a resource to enter hours.' : TotalHoursString()) }, event: { mouseover: UpdateTotalHours($parent.ResourceId()) }" />
</td>
<!-- /ko -->
和
self.UpdateTotalHours = function (resourceId) {
if ((resourceId != null && resourceId != undefined) && self.Week() && self.Year() && (self.TotalHours() === null || self.TotalHours() === undefined)) {
alert('here');
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf8',
url: staffingUtilities.baseUrl + 'Forecasting/GetResourceTotalUsage/',
data: JSON.stringify({
id: resourceId,
year: self.Year(),
week: self.Week()
}),
success: function (data) {
if (data == 0) {
self.TotalHours(null);
return;
}
self.TotalHours(data);
}
});
}
};
您需要将
鼠标悬停调用包装在一个函数中,当绑定对象时,括号会导致执行 UpdateTotalHours:
mouseover: function(){ UpdateTotalHours($parent.ResourceId()); }
请参阅:http://knockoutjs.com/documentation/event-binding.html
相关文章:
- 如何正确引用传递到淘汰中的当前元素的属性.JS
- 什么是淘汰赛中的根管理员.js以及它指向什么
- 条件显示淘汰js
- 淘汰JS内联三元
- 自定义过滤淘汰js observableArray
- 淘汰JS与Kendo UI网格忘记用户'的选择
- 下拉列表选择的值在UI淘汰js中没有更新
- 淘汰js应用程序的正确文件结构是什么
- 淘汰js可观察扩展的执行顺序是什么
- 开关按钮淘汰js
- 如何设置'样式:color'淘汰赛中的颜色选择器.JS
- 从淘汰js组件中获取数据
- 复选框表单字段名称在表单提交淘汰js时不提交
- 淘汰具有多对多关系的JS ObservableArray
- 淘汰剑道.js下拉组项
- Google Analytics(分析)在淘汰赛中推送跟踪事件.js数据绑定
- 单选按钮在 ajax 调用后不会更改(淘汰 js)
- 在淘汰赛中更改 css 类.js单击鼠标
- 如果语句绑定短路在淘汰.js
- 在页面加载时调用的淘汰 JS 鼠标悬停事件