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 个以上的元素使用自定义绑定,这还将避免您多次注册处理程序。现在每个处理程序将处理一个元素,而不是让选择器在每次调用时一遍又一遍地解析相同的元素
我添加了一个自定义绑定到一个元素,它的工作是不断检查是否点击了 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 个以上的元素使用自定义绑定,这还将避免您多次注册处理程序。现在每个处理程序将处理一个元素,而不是让选择器在每次调用时一遍又一遍地解析相同的元素