Передача атрибутов данных из элемента привязки в функцию jQuery

0

У меня есть список значков и URL-адресов, которые нужно открыть во всплывающем окне, например: facebook, twitter и т.д.

У меня есть функция popupWindow jQuery, в которой я не помню, где я нашел, но она имеет следующий список настроек:

$.fn.popupWindow.defaultSettings = {
    centerBrowser:0,
    centerScreen:0,
    height:500,
    left:0,
    location:0,
    menubar:0,
    resizable:0,
    scrollbars:0,
    status:0,
    width:500,
    windowName:null,
    windowURL:null,
    top:0,
    toolbar:0
};

Поэтому я могу просто передать высоту, ширину и центр, чтобы получить очень приятное всплывающее окно для совместного использования:

$(element).popupWindow({ 
    centerBrowser: 1,
    width: 500,
    height: 250 
});

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить доступ к атрибутам данных моей ссылки, чтобы передавать высоту и ширину методу popover.

Мои ссылки похожи на:

<a href="http://www.facebook.com/sharer.php?etc" 
    class="social-share facebook" 
    data-width="550" 
    data-height="275">Share on Facebook</a>

Пытался:

$('.social-share').popupWindow({ 
    centerBrowser: 1,
    height: $(this).attr('data-height'),
    width: $(this).attr('data-width')
});

Это просто игнорирует сценарии и переходит в FB в том же окне.

Пытался:

$('.social-share').popupWindow({ 
    centerBrowser: 1,
    height: this.attr('data-height'),
    width: this.attr('data-width')
});

Объект не имеет атрибута attr.

Внутри функции popupWindow они написали некоторые переопределения, которые сначала выбирают свойства элемента, а затем возвращаются к таким настройкам:

settings.windowName = this.name || settings.windowName;
settings.windowURL = this.href || settings.windowURL;

Я считаю, что это самое элегантное и функциональное решение, так что будет тройной резерв, сначала посмотрите, есть ли атрибуты data-width data-height, затем проверьте переданные в настройках, а затем используйте настройки по умолчанию.

Но, увы, я тоже не могу работать.

Я попытался добавить оба:

settings.width = $(this).attr('data-width') || settings.width;
settings.height = $(this).attr('data-height') || settings.height;

это не влияет на высоту или ширину, просто использует значение по умолчанию.

и попытался:

settings.width = this.attr('data-width') || settings.width;
settings.height = this.attr('data-height') || settings.height;

этот объект ошибки throw не имеет атрибута attr.

ПОМОГИТЕ!

Теги:

1 ответ

0

Попробуйте это Вместо того, чтобы часто обращаться к DOM, попробуйте сделать это с помощью .data() Я думаю, проблема в том, что вам не хватает units

$('.social-share').popupWindow({ 
    centerBrowser: 1,
    height: this.data('height') + 'px',
    width:  this.data('width') + 'px'
});
  • 0
    Объект не имеет данных атрибута. Кроме того, функция popupWindow не принимает единицы измерения в настройках.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню