Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 07/16/2013 in all areas

  1. nerv 1. Потому, что если настройки по-умолчанию вынести за функцию (function($) { // Default var settings = { scrollTop: 300 }; $.fn.myBox = function(options) { return this.each(function() { /* ... */ }); }; })(jQuery); то первый же вызов плагина с параметрами перепишет этот объект глобально (в рамках контекста) для всех будущих обращений к плагину. Это явно не то что ожидается 2. Что нужно было точно вынести из return this.each(), так это extend который переопределяет параметры по-умолчанию: (function($) { $.fn.myBox = function(options) { // Default var settings = $.extend({ scrollTop: 300 }, options); return this.each(function() { /* ... */ }); }; })(jQuery); Что касается событий... ну в данном конкретном случае теоретически да можно сразу скопом для всех цеплять события. Тут надо сказать вообще весьма странный функционал в этом плагине. Но! Как правило, коллекция (может состоять из нескольких элементов) к которой привязывается плагин, действовать должны по отдельности каждый элемент коллекции независимо от остальных.
    1 point
  2. не читал, но могу сказать несколько комментариев по твоему коду: $.fn.myBox = function(options) { // Default var settings = { scrollTop: 300 }; 1. зачем создавать объект с настройками каждый раз при обращению к плагину? $(window).on({ 2. зачем биндить событие каждый раз при вызове плагина, если можно сделать это один раз для всех вызовов? (в данном случае)
    1 point
  3. Извиняюсь, маленькую ошибку допустила, не "if(box.scrollTop()>300){", а "if($(this).scrollTop()>300){" http://jsfiddle.net/cJ8MV/7/
    1 point
  4. На форуме есть отличная статья которая очень подробно объясняет как писать плагины к jQuery http://forum.htmlboo...showtopic=23096 . Спасибо товарищу Great Rash'у за это. (function($) { $.fn.myBox = function(options) { // Default var settings = { scrollTop: 300 }; return this.each(function() { if (options) { $.extend(settings, options); } var $this = $(this); $(window).on({ scroll: function() { if ($(this).scrollTop() > settings.scrollTop) { $this.fadeIn(); } else { $this.fadeOut(); } } }); }); }; })(jQuery); Потом уже можно будет вызывать $(function(){ $('.box').myBox({ scrollTop : 500 }); });
    1 point
  5. Первая ошибка - не this, а $(this). Вторая, когда ты входишь в функцию myBox() $(this) - это ".myBox", а во внутренней функции scroll $(this) - это уже window. Поэтому первое, что нужно сделать в myBox() - это записать значение this в переменную. var box = $(this); и уже использовать его. jQuery(document).ready(function(){ (function( $ ){ $.fn.myBox = function() { var box = $(this); jQuery(window).scroll(function () { if (box.scrollTop() > 300) { box.fadeIn(); } else { box.fadeOut(); } }); }; })( jQuery ); }); jQuery(".box").myBox();
    1 point
  6. не проверял (function( $ ) { var win; $.fn.myBox = function() { win = win || $( window ).scroll(function() { win.trigger( 'my' ); }); win.on( 'my', function() { var method = win.scrollTop > 300 ? 'fadeIn' : 'fadeOut'; this[ method ](); }.bind( this )); }; }( jQuery )); $(function() { $( ".box" ).myBox(); });
    1 point
  7. Насколько я помню, в плагинах не нужен $(document).ready();
    1 point
  8. Большое спасибо! Я пытался использовать z-index, но не очень получалось из-за position: static;
    1 point
  9. Вот такого делать точно не нужно. За -webkit-only (второй пример) в 2013-м нужно сажать на пару лет за IE8 без права переустановки, а при рецидиве — отрезать клавиатуру с мышкой. Первый пример, конечно, забавный, но загаживать разметку тоннами бессмысленных дивов тупо ради галочки «ни грамма JS» — имхо, не лучший пример подрастающему поколению
    1 point
  10. Здравствуйте. Так вышло, что у меня одномоментно возникло 2 вопроса - но для каждого из них создавать отдельный пост я не увидел смысла.. 1) Меня заинтересовал следующий момент: Можно ли организовать кроссбраузерную реализацию тега <select> без помощи JS?? Имею ввиду не сам внешний вид - а именно размеры тега + вертикальное центрирование шрифта? Для примера есть такая страница: http://webmaster.ayr...ru-2/index.html В шапке есть 2 селекта и мне необходимо что бы размеры и вертикальное центрирование было одинаковым в следующих браузерах(в последних их версиях): Mazilla, Google Chrome, Safari, Opera, + IE-7,8,9,10!? Проблема в том, что в ie-7 cелект мне не удаётся вертикально отцентрировать: (c остальными браузерами разобрался.) http://webmaster.ayr...e_7_selects.jpg 2) Реально ли на сегодняшний день загрузить сайт(вернее его клиентскую часть) на свой хостинг и продемонстрировать его заказчику таким образом, что бы он не смог его украсть? Или по крайней мере сделать так, что бы красть его было не выгодно с точки зрения временных затрат.) В том числе и через специализированные программы(например: Фаербаг, Скрапбук и т.п.) ??? Интересно мнение бывалых в этом деле пользователей.. P.S. Буду признателен за любые конструктивные советы по данным вопросам..
    1 point
  11. Почитал статью на хабре и похоже действительно ie-7 в картину не вписывается. ) У автора той статьи селект нельзя увеличивать по высоте - иначе там в ie-7 такая же проблема как и у меня появляется. (либо я чего то в той статье не до понял.) P.S. За подсказку с обфускаторами спасибо! Обязательно погуглю, на досуге, на эту тему.
    1 point
This leaderboard is set to Kiev/GMT+03:00
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy