оптимизация jQuery(document).ready

Y1
На сайте с 31.08.2011
Offline
85
758

Вобщем есть код и много ссылок для которых нужно его выполнять

<script type="text/javascript">
<!--
jQuery(document).ready(function ($) {
var $link = $('#iphorm_fancybox_5214fadb8c949');
if ($.isFunction($.fn.fancybox) && !$link.data('iphorm-initialised')) {

var tl = $('#iphorm_fancybox_62145f67cdb4b').attr("title");

$link.fancybox($.extend({
inline: true,
href: '#iphorm-outer-52145f67cd387',
onStart: function () {

$('#fancybox-outer').css('opacity', 0);
},
onComplete: function () {

$('#fancybox-wrap, #fancybox-content').css({width: 'auto'});
$.fancybox.center(0);

setTimeout(function () {
$('#fancybox-outer').animate({opacity: 1}, 400);
$('#fancybox-overlay').css({height: $(document).height()});
}, 1);
var pi = parseInt($('#iphorm_fancybox_62145f67cdb4b').attr ("rel"),10);
$("form.iphorm input[name='iphorm_4_7']").val(pi);
}
}, {"title":tl})).data('iphorm-initialised', true);
}
});
//-->
</script>

ссылки вида

<a id="iphorm_fancybox_5214fadb8c949" class="iphorm-fancybox-link" href="#" rel="244" title="заголовок1"><img class="com" src="/0.gif" title=""></a>

<a id="iphorm_fancybox_5214fadb8c948" class="iphorm-fancybox-link" href="#" rel="245" title="заголовок2"><img class="com" src="/0.gif" title=""></a>

в (document).ready мне надо выдирать параметры ссылки rel и title

jQuery(this).attr("title") - не работает

работает только $('#iphorm_fancybox_62145f67cdb4b').attr("title"); те обращение по конкретному id

но в таком случае приходится тянуть код (document).ready за каждой ссылкой

Подскажите можно ли оптимизировать чтобы использовать один код (document).ready для всех ссылок?

H
На сайте с 09.10.2012
Offline
11
#1

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

Топорный вариант без использования особенностей fancybox:


function fancybox_init(element)
{
var title = element.attr('title');
$link.fancybox($.extend({
inline: true,
href: '#iphorm-outer-52145f67cd387',
onStart: function () {

$('#fancybox-outer').css('opacity', 0);
},
onComplete: function () {

$('#fancybox-wrap, #fancybox-content').css({width: 'auto'});
$.fancybox.center(0);

setTimeout(function () {
$('#fancybox-outer').animate({opacity: 1}, 400);
$('#fancybox-overlay').css({height: $(document).height()});
}, 1);
var pi = parseInt($('#iphorm_fancybox_62145f67cdb4b').attr ("rel"),10);
$("form.iphorm input[name='iphorm_4_7']").val(pi);
}
}, {"title":title})).data('iphorm-initialised', true);

}
jQuery(document).ready(function ($) {
var links = $('.iphorm-fancybox-link');
links.each(function(index,element)
{
fancybox_init($(element));
});
});

Код я не тестировал, но идея должна быть понятна:

вынесем инициализацию fancybox в отдельную функцию и будем применять ее к каждому нужному нам элементу в цикле. В самой функции (fancybox_init) мы можем по своему усмотрению работать с любыми атрибутами текущей ссылки.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий