javascript - div 点击事件在页面加载时自动触发

标签 javascript knockout.js

我想创建包含一系列内容的 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/

相关文章:

javascript - 如果绑定(bind)空/未定义(带过滤器),Angularjs模板默认值

javascript - Three.js - 导入带有纹理的 3d 对象

javascript - 将查询序列化为 javascript .map

javascript - 正则表达式 - 搜索和替换

javascript - 访问 View 模型中的对象 Knockout

javascript - 在 IE6 中创建具有 5000 个选项的选择标签的最快方法是什么?

javascript - 设置新值时,Knockout Force 会通知订阅者可观察值

javascript - knockout : custom data-bind 'with' to pass function by reference

knockout.js - typescript - 同时不允许隐式任何类型

knockout.js - ko.utils.unwrapObservable和ko.toJS有什么区别?