如何使用$(document).on("点击..在<标签上?

Nai*_*air 6 jquery knockout.js

我是jQuery的新手,我正在使用jQuery 1.7.1来学习Knockout JS,我正在关注作者的视频演示.在他的例子中,他有一个类似的标签

<a href="#" class="button-delete">Delete</a>
Run Code Online (Sandbox Code Playgroud)

在视图模型中他有类似的东西

$(document).on("click", ".button-delete", function() { console.log("inside"); });
Run Code Online (Sandbox Code Playgroud)

当我点击删除按钮时,当我尝试在我身边时,我从未看到console.log出现在Chrome F12屏幕的控制台窗口上.我这里有两个问题

  1. 有什么我做错了,这会阻止控制台消息显示出来吗?
  2. 如果我没有要做css的类,还有其他方法可以在viewmodel中执行相同的任务吗?

编辑:我纠正了我的错字,代码有正确的括号(我使用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>
Run Code Online (Sandbox Code Playgroud)

这是我的淘汰视图模型

/// <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);    
}
Run Code Online (Sandbox Code Playgroud)

JIA*_*JIA 22

你有任何错误吗?

您载入jQuery.jsknockout.js

请发布视图模型代码.


啊!得到它你有一个错字

$(document).on("click", ".button-delete", function() {
//   console.log("inside";   <-- here it is
    console.log("inside");
 });
Run Code Online (Sandbox Code Playgroud)

DEMO


Joh*_*apa 3

看起来你已经得到了第一个答案。如果您没有类名,则在绑定单击事件的“其他方法”上,有几个选项。您可以向标签添加一个 id,并以这种方式调用它。或者,如果您不想添加类或 id,您可以使用带有“click”内置绑定的数据绑定语法来调用视图模型上的方法(显然这不是 jquery evnet 风格,所以这取决于你想如何连接你的事件)。像这样:

<button data-bind="click: someMethod">Click me</button>
Run Code Online (Sandbox Code Playgroud)