我试图通过敲除点击绑定将一个参数传递给一个函数。如果我尝试发送它没有绑定,它的工作原理。
这是没有绑定的工作代码的小提琴:
https://jsfiddle.net/Obviously/ev0Lcx7q/4/
但如果我尝试这样绑定,它就不起作用了:
<input class="sometextbox">
<button type="button" data-bind="click: $root.someFunction.bind($root,$(this).siblings('input').val())"> Search!
</button>
我在$(this)得到错误,JavaScript运行时错误:对象不支持属性或方法'siblings'
答案 0 :(得分:1)
你的代码并没有真正正确地使用淘汰赛。使用它来添加点击事件时(如你的小提琴示例所示),常规的内联事件定义工作正常,但忽略了敲除将该文本框绑定到程序中的某个变量的能力,这似乎就是让事情倒退。 更像这样的是我认为淘汰赛的用途:
<script>
ko.applyBindings(model);
function myModel(){
this.myInput = ko.observable('some default value');
}
function myClick(){
alert(model.myInput());
}
</script>
<input class="textbox" data-bind="value: myTextArea">
<button data-bind="click: myClick">Go</button>
答案 1 :(得分:1)
$element
使您可以访问Knockout绑定中的当前元素。
<input class="sometextbox">
<button type="button" data-bind="click: $root.someFunction.bind($root, $($element).siblings('input').val())"> Search! </button>
请注意,在Knockout绑定中使用jquery不是常用方法。