У меня есть список значков и 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.
ПОМОГИТЕ!
Попробуйте это Вместо того, чтобы часто обращаться к DOM, попробуйте сделать это с помощью .data()
Я думаю, проблема в том, что вам не хватает units
$('.social-share').popupWindow({
centerBrowser: 1,
height: this.data('height') + 'px',
width: this.data('width') + 'px'
});