使用 jQuery 将对象绑定到一行
binding objects to a row with jquery
我有一些表格数据,一个产品列表。
id | name | description | options
1 | foo | bar | [delete]
现在通常我只是在删除按钮上设置一个类,例如 .delete-item 并执行
$('.delete-item').click(function(e) {
e.preventDefault();
// do something/ajax etc
});
但是有了这个,我将添加一些其他功能,例如描述的内联编辑。现在我可以绑定另一个函数,例如我的删除函数,但我想知道是否有一种更多的 jquery 方法来做到这一点,因为我以后可能会通过自动计算总数来添加产品价格和数量,它可能会变得非常毛茸茸的。
也许是一个插件,或者某种对象?
$('table').productEditor();
这有意义吗?我去读这种事情有什么吗?
你可以写一个小的jQuery插件来做到这一点:
//tableEditor.js
;(function($){
$.fn.tableEditor = function(settings) {
var defaults = {stuff: 1, etc: true};
settings = $.extend(defaults, settings || {});
//using "on" so we wouldn't have to use multiple handlers for each link
this.on('click', '.delete-item', function() {
e.preventDefault();
var this_row = $(this).closest('tr');
// do stuff
});
this.on('click', '.edit-item', function() {
e.preventDefault();
var this_row = $(this).closest('tr');
// do stuff
});
return this;
};
})(jQuery);
然后像这样称呼它:
//main.js
$(function() {
$('#table').tableEditor({etc: false});
});
你可以做:
编辑 :对于动态添加的行,请使用委托形式的.on()
:
$("#myTable").on("click", "td", function (event) {
var thisID = $(this).siblings("td").eq(0).text(); // get ID of clicked row
switch (event.target.className) {
case "delete":
//delete
alert("delete this ID = " + thisID);
break;
case "edit":
// edit
alert("edit this ID = " + thisID);
break;
default:
return false;
}
}); // on click
您仍然需要为每个可点击的td
添加一个类
请参阅新的 JSFIDDLE,其中包含一种添加行的方法。
注意:.on()
需要 jQuery v1.7+
相关文章:
- 动态插入的表:JQuery未检测到最后一行
- Jquery幻灯片以一行左侧的图像开始,但我希望它从右端开始
- 如何确保JQuery的一行在另一行之前运行
- 使用Ajax和JQuery从SQL数据库中添加和删除一行
- 如何防止在选定的jQuery多选时一行重复条目
- 如何使用jquery复制文本区域中的每一行文本
- jquery插件 - 已选择 - 多项选择不在一行中列出,而是列在一列中
- 如何使用 jQuery 在文本区域中的每一行添加文本
- 使用jQuery删除表行,但禁止删除第一行
- 如果最后一行已经显示,如何防止jQuery加载更多停止函数
- 通过jQuery在文本区域占位符内新建一行
- 如何在jquery菜单中的li项下添加一行
- 试图美化一行jQuery
- 如何在数据表中复制一行(jQuery DataTables插件)
- 用一行(jQuery)连接不同框架中的2个元素
- 在一行jquery中对输入和选择进行操作
- 获取一行jQuery上的最后一个li
- 在表前面加上第一行 jQuery
- 如何从一行jQuery中获取数据
- 在前一行代码完成后运行一行jQuery