-
-
Save sapegin/3103107 to your computer and use it in GitHub Desktop.
| /** | |
| * Controls | |
| * | |
| * <span data-trigger="slider-next" data-recipient=".portfolio">Next</span> | |
| */ | |
| $(document).click(function(e) { | |
| var target = e.target; | |
| if (target.getAttribute('data-trigger') && target.getAttribute('data-recipient')) { | |
| target = $(target); | |
| $(target.data('recipient')).trigger(target.data('trigger')); | |
| e.preventDefault(); | |
| } | |
| }); |
Да, универсальность съедает производительность. Можешь потыкать тест. Но, деградация не такая уж и критическая, чтобы отвергать этот вариант.
Ну да, не такая уж большая разница. Но ещё надо бы добавить вариант, где target.getAttribute('data-trigger') тоже на jQuery. Тогда разница должна быть ещё меньше.
В этом нет нужды. Селекторы обслуживает Sizzle, который не обращается к jQuery.
Можно ещё попробовать расширить возможности селекторов jQuery и матчить елементы не по атрибутам, а сразу по связанным с ним данным. Как это скажется на производительности кода я, опять же, достоверно сказать не могу.
А Сизл, по-твоему, магию использует? :)
Нет, что ты. Я хотел сказать, что $(el).attr("data-trigger") и $("[data-trigger]") обрабатываются абсолютно не связанными друг с другом участками кода.
Но оба создают объект jQuery, который не создаётся в исходном варианте.
Спасибо за предложение! Когда столкнусь с такой разметкой, попробую.