我是jQuery的新手,我正在使用jQuery 1.7.1来学习Knockout JS,我正在关注作者的视频演示。在他的例子中,他有一个类似
的标签<a href="#" class="button-delete">Delete</a>
并且在viewmodel中他有类似
的东西$(document).on("click", ".button-delete", function() { console.log("inside"); });
当我点击删除按钮时,当我尝试在我身边时,我从未看到console.log出现在Chrome F12屏幕的控制台窗口上。我在这里有两个问题
编辑: 我纠正了我的错字,代码有正确的括号(我使用web矩阵,因此它处理这些问题)。这是我的HTML
<!DOCTYPE html>
<script src="Scripts/jquery-1.7.1.js" type="text/javascript"></script>
<script src="Scripts/knockout-2.0.0.js" type="text/javascript"></script>
<script src="Scripts/ViewModel.js" type="text/javascript"></script>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
<link href="assets/css/bootstrap.min.css" rel="stylesheet">
</head>
<body onload="init()">
<input data-bind="value: tagsToAdd"/>
<button data-bind="click: addTag">Add</button>
<ul data-bind="foreach: tags">
<li>
<span data-bind="text: Name"></span>
<div>
<a href="#" class="btn btn-danger" >Delete</a>
</div>
</li>
</ul>
</body>
</html>
这是我的淘汰视图模型
/// <reference file="jquery-1.7.1.js" />
/// <reference file="knockout-2.0.0.js" />
var data = [
{Id: 1, Name: "Ball Handling" },
{Id: 2, Name: "Shooting" },
{Id: 3, Name: "Rebounding" }
];
function viewModel()
{
var self = this;
self.tags = ko.observableArray(data);
self.tagsToAdd = ko.observable("");
self.addTag = function() {
self.tags.push({ Name: this.tagsToAdd() });
self.tagsToAdd("");
}
}
$(document).on("click", ".btn-danger", function () {
console.log("inside");
});
var viewModelInstance;
function init(){
this.viewModelInstance = new viewModel();
ko.applyBindings(viewModelInstance);
}
答案 0 :(得分:21)
你有任何错误吗?
您是否加载了jQuery.js
和knockout.js
请发布视图模型代码。
啊!得到它你有一个错字
$(document).on("click", ".button-delete", function() {
// console.log("inside"; <-- here it is
console.log("inside");
});
答案 1 :(得分:2)
看起来你已经得到了第一个答案。在&#34;其他方式&#34;如果你没有绑定click事件;有一个类名,有几个选项。您可以为标记添加ID,并以此方式调用它。或者,如果您不想添加类或ID,则可以使用数据绑定语法和&#34;单击&#34;内置绑定以在视图模型上调用方法(显然这不是jquery evnet样式,因此您可以根据自己的需要连接事件)。像这样:
<button data-bind="click: someMethod">Click me</button>
答案 2 :(得分:0)
Nair首先让我知道你想在这做什么 如果你想删除按钮工作。然后使用jquery Ui的remove函数,如果你想控制一些东西,那么只需编写console.log(“你想要控制台”);
我认为你的行function() { console.log("inside"; }); is wrong
。
答案 3 :(得分:0)
我建议您查看敲除的click绑定,而不是将knockout与随机查询混合。单击绑定将允许您将click事件绑定到视图模型中的函数。