jQuery: наследовать функции от нескольких объектов - PullRequest
0 голосов
/ 28 ноября 2009

я сделал несколько табличных виджетов (listview-kind-of), которые имеют одинаковые характеристики: стилизация нечетных / четных строк, наведите курсор на вкл / выкл, установите цвет на клик, удалив строку при нажатии на значок корзины.

так что это всегда один и тот же (prototype-) код для каждого виджета. есть ли способ получить код только один раз, а затем просто применить / наследовать его ко всем виджетам?

2-й, вот часть кода - это можно оптимизировать?

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");

1 Ответ

0 голосов
/ 28 ноября 2009

У вас есть 2 варианта:

Сначала просто создайте плагин, который обрабатывает эти основные вещи, а затем создайте другие плагины, которые выполняют специализированные вещи для этого списка.

Второе использование 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...