jQuery:将函数继承到多个对象

发布于 2024-08-13 00:20:23 字数 480 浏览 8 评论 0原文

我制作了几个基于表格的小部件(listview-kind-of),它们都具有相同的特征: 设置奇数/偶数行样式、悬停开/关、单击时设置颜色、单击垃圾图标时删除行。

所以每个小部件总是相同的(原型)代码。 有没有办法只拥有一次代码,然后简单地将其应用/继承到所有小部件?

第二,这是一些代码 - 可以优化吗?

var me = this;
$("tr",this.table).each(function(i)
{
    var tr = $(this);
    tr.bind("mouseover",function(){me.hover(tr,true)});
    tr.bind("mouseout",function(){me.hover(tr,false)});
    tr.bind("click",function(){me.Click(tr)});
});
$("tr").filter(":odd").addClass("odd");

i made several table-based-widgets (listview-kind-of) which all have the same characteristics:
styling odd/even rows, hover on/off, set color onClick, deleting a row when clicking on trash-icon.

so it's always the same (prototype-)code for each widget.
is there a way to have the code only once then simply apply/inherit it to all widgets?

2nd, here's some of the code - could this be optimized?

var me = this;
$("tr",this.table).each(function(i)
{
    var tr = $(this);
    tr.bind("mouseover",function(){me.hover(tr,true)});
    tr.bind("mouseout",function(){me.hover(tr,false)});
    tr.bind("click",function(){me.Click(tr)});
});
$("tr").filter(":odd").addClass("odd");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫竹語嫣☆ 2024-08-20 00:20:23

您有两个选择:

首先创建一个处理基本内容的插件,然后创建其他插件来为该列表执行专门的内容。

其次,使用 jQuery.extend 扩展一个插件并创建一个新插件。

要优化此使用事件委托 ( jquery().live() )

var me = this;
var id = this.table.attr('id');

$('#'.id)
.live("mouseover",function(){me.hover($(this),true)})
.live("mouseout",function(){me.hover($(this),false)})
.live("click",function(){me.Click($(this)});

$("tr").filter(":odd").addClass("odd");

http: //docs.jquery.com/Events/live

You have 2 options:

First just create a plugin that handles that basic stuff and then create other plugins that do the specialized stuff for that listing.

Second use jQuery.extend to extend one plugin and create a new one.

To optimize this use event delegation ( jquery().live() )

var me = this;
var id = this.table.attr('id');

$('#'.id)
.live("mouseover",function(){me.hover($(this),true)})
.live("mouseout",function(){me.hover($(this),false)})
.live("click",function(){me.Click($(this)});

$("tr").filter(":odd").addClass("odd");

http://docs.jquery.com/Events/live

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文