Knockoutjs:如何检查我的自定义绑定中是否单击了另一个元素

Knockoutjs: How do i check if another element is clicked in my custom binding

我添加了一个自定义绑定到一个元素,它的工作是不断检查是否点击了 li 标签,所以我在里面添加了一个 onclick 侦听器,但它确实有效。怎么会,这是我的代码:

    ko.bindingHandlers.makeActive = {

    update: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
        // First get the latest data that we're bound to
        var value = valueAccessor();

        // Next, whether or not the supplied model property is observable, get its current value
        var valueUnwrapped = ko.unwrap(value);

        $(".friend a").click(function(){
            alert("The element was clicked.");
        });


    }
};

有什么方法可以检查某个元素是否已被单击?

你的逻辑有点错了。 不要在更新回调中设置点击侦听器,它会在每次更新附加到元素的可观察对象时尝试注册事件。而是像这样在初始化回调中注册监听器:

 ko.bindingHandlers.makeActive = {
     init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
         $(".friend a").on('click',function(){
            alert("The element was clicked.");
         });
     },
     update: function(element, valueAccessor, allBindings, viewModel, bindingContext) 
     {
     }
};

另一方面,现在您应该将此处理程序直接绑定到您要观察的元素上,因此您不应该在其中使用选择器,而是

 $(element).on('click',function(){
            alert("The element was clicked.");
        });

如果您对 1 个以上的元素使用自定义绑定,这还将避免您多次注册处理程序。现在每个处理程序将处理一个元素,而不是让选择器在每次调用时一遍又一遍地解析相同的元素