我想创建包含一系列内容的 html 页面(例如 div 有员工详细信息列表)。当用户单击 div 时,我想导航到另一个页面。请查看this .
问题是当我第一次加载页面时,div 的点击事件被触发。 如何避免在页面加载事件期间触发不必要的点击事件?
下面是我的html代码
<div data-bind="click: clickMe('ok1')">
<h1>Emplyee details</h1>
<p>This is test</p>
</div>
<div data-bind="click: clickMe('ok2')">
<h1>Emplyee details</h1>
<p>This is test</p>
</div>
var ViewModel = function(){
var self = this;
self.clickMe = function(url){
//This function is automatically getting called
//when page loads.
alert(url);
}
}
ko.applyBindings(new ViewModel());
问候, 赫曼特
最佳答案
您需要将函数传递给点击处理程序,而不是点击函数的结果。
执行 clickMe()
会触发该方法并将结果返回给处理程序。
完成您想要的操作的一种方法是将函数调用包装在匿名函数中,如下所示:
function(){ clickMe('params'); }
所以你得到:
<div data-bind="click: function(){ clickMe('ok1'); }">
或者,您可以在 clickMe
方法上使用 bind
函数来传递所需的参数:
clickMe.bind($data, "param1")
所以你得到:
<div data-bind="click: clickMe.bind($data, 'param1')">
关于javascript - div 点击事件在页面加载时自动触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20869572/