1

我正在构建一个应用程序,它在某个时候会生成一个非常大的汇总表(20x~200)。我可以在支持代码中识别的一些单元格(可能是 1000 个)需要某种 onclick 绑定。这些单元格的值需要解析为页面上的输入字段。

我调查了以下内容的内联渲染: onclick=genericfunctioncall("copy_of_celldata") 不知何故这对我来说还不够现代.....:)

因为我将 JQuery 用于其他一些东西,所以我想利用它。考虑类绑定和 id 绑定(必须让我渲染 ID 和大量绑定)。类绑定是我的首选方式。但是因为我动态渲染表格(Ajax 在 MVC4 中调用部分视图并渲染 .data),所以我必须使用 .on("click",....) 方法。我想不出一种方法来检测我单击了哪个 TD 以确定它的值并将其解析为输入。

有人出主意吗?

4

2 回答 2

3

td为您要为其分配点击事件的所有人提供一个通用类。

使用事件委托,因为您要为 1000 多个元素绑定相同的内容。

使用this事件内部的上下文来获取触发事件的 td。

$('table').on('click', '.tdClass', function() {
     // this refers to td which triggered the event
});
于 2013-08-08T20:21:25.333 回答
0

我对使用 jQuery.data() 感到非常满意。你可以将任何你想要的东西绑定到一个 DOM 元素上。如果您有来自服务器的 JSON 响应,这里将是一个使用它的示例:

$.get('/url',function(resp){
   $.each(resp,function(k,v){
       // v is json object {"name":"item name","id": 22, "link": "http://www.google.com"}
       var item = $('<li />');
       item.html(v.name);
       item.data('item',v);  //attach your json object to dom element.

       $('ul').append(item);
   });
});
$('ul').on('click','li',function(){
      var data = $(this).data('item') // get your original object 
      alert(data.link) -->> "http://www.google.com"
      // do whatever you need to do.
});
于 2013-08-08T20:26:41.510 回答