Javascript Knockout.js-mouseover和mouseout工作不正常

Javascript Knockout.js-mouseover和mouseout工作不正常,javascript,knockout.js,Javascript,Knockout.js,我正在尝试使用knockout.js-mouseover和mouseout。我对淘汰赛有点陌生。我所做的工作如下: <h2 id="popup" data-bind="event: { mouseover: PK.showdiv, mouseout: PK.hidediv }"> Search </h2> 搜寻 我的脚本块如下所示: @section Javascript { <script type="text/javas

我正在尝试使用knockout.js-mouseover和mouseout。我对淘汰赛有点陌生。我所做的工作如下:

 <h2 id="popup" data-bind="event: { mouseover: PK.showdiv, mouseout: PK.hidediv }">
                Search
 </h2>

搜寻
我的脚本块如下所示:

@section Javascript
{
<script type="text/javascript">
    $(function () {
        PK.showdiv = function () {
            alert("Showed");
        };
        PK.hidedivOver = function () {
            alert("Hidden");
        };
    })
@节Javascript
{
$(函数(){
PK.showdiv=函数(){
警惕(“显示”);
};
PK.hidedivOver=函数(){
警惕(“隐藏”);
};
})
如果我使用带有“onmouseover”或“onmouseout”的普通JavaScript调用,这很好。但是类似于knockout.js调用的带有事件的数据绑定不起作用


我正在使用带Razor view的MVC。

在我看来,您没有调用
applyBindings
函数:

ko.applyBindings(PK);
我也不知道如何初始化
PK
对象


确保在页面准备就绪时调用
applyBindings
。为此,可以将其放在页面底部或
$(文档)中。ready

我在JSFIDLE中创建了一些示例


因此,一般来说,我在ViewModel上创建了两个名为“showdiv”和“hidediv”的函数 Javascript代码:
注意:我们应该在js代码的底部为viewModel应用绑定(调用ko.applyBindings(newViewModel());)


HTML代码:


开始编辑
对不起,忘了提及您的错误:
1.您没有将PK初始化为

var PK = this;
2.在HTML代码中,您不需要使用PK调用函数,只需输入函数名:

<h2 id="popup" data-bind="event: { mouseover: showdiv, mouseout: hidediv }">
            Search
</h2>

搜寻
3.在javasript代码中,您有不正确的函数名,如“hidedivOver”,因此您应该将此函数重命名为“hidediv”,或者您可以将HTML代码中的函数“hidediv”重命名为“hidedivOver”

4.您没有创建视图模型,也没有将其应用于淘汰

结束编辑

它回答了你的问题吗?

谢谢。

这是您所有的代码吗?如果是,您没有正确绑定。您没有调用
ko.applyBindings()
,也没有viewmodel。现已修复。这是对ko的引用的问题。
div{
  width: 100px;
  height: 100px;
  border: 1px solid #222;
}
span{
  margin: 20px;
}
.redColor{
  color: red;
}
var PK = this;
<h2 id="popup" data-bind="event: { mouseover: showdiv, mouseout: hidediv }">
            Search
</h2>