Вот как-то так.
<script src="//code.jquery.com/jquery-latest.min.js"></script> <script> ;(function($) { $.fn.pluginName = function( settings ) { var settings = $.extend( { }, settings); return this.each(function() { var element = $(this); $('.foo').click(function(){ alert($(this)); }); }); }; }) (jQuery) ; </script> <style> .foo{ width:100px; height:100px; background: #000; } </style> <button onclick="$(this).pluginName()">Нажми </button> <button onclick="$(this).pluginName()">Нажми 2</button> <div class='foo'></div> |
Цитата:
|
prison47,
<!DOCTYPE HTML> <html> <head> <title></title> <meta charset="utf-8" /> <style type="text/css"> #general_overlay{ background-color: #FF0099; width: 300px; height: 50px; } </style> </head> <body> <script src="http://code.jquery.com/jquery-latest.js"></script> <script> (function($) { $.fn.pluginName = function( settings ) { var settings = $.extend( { }, settings); return this.each(function() { var element = $(this); if($('#general_overlay').length) {alert('No pasarán'); return} ; if(!$('#general_overlay').length){ $("<div id='general_overlay'></div>").appendTo($('body')); }; var genOverlay = $('#general_overlay'); element.click( function(){ genOverlay.show(); }); $('body').on('click.overPop', '#general_overlay', function(){ $(this).hide(); // console.log($(this)); }); }); }; }) (jQuery) ; </script> <button onclick="$(this).pluginName()">Нажми </button> <button onclick="$(this).pluginName()">Нажми 2</button> </body> </html> |
Спасибо за оформление, вот получается если произвожу клик на диве overlay он удаляется а в консоле this проходит два раза.
А в этом коде не могу разобраться, я незнаю значение переменных , например D options = options || {}; index = options.index || 0; if (!selector || options.live === false) { that.unbind('click.fb-start').bind('click.fb-start', run); } else { D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run); } this.filter('[data-fancybox-start=1]').trigger('click'); return this; |
Цитата:
|
prison47,
лучше скажите как вы хотите чтоб это работало |
Понимаете у меня "плагин" он вешается например на кнопку. При клике на кнопку в конец бади добавляется див оверлей с display:none. Потом добавляется еще один див с определенной информацией он позиционирован в угол браузера. Кликаем на этот див с информацией он позиционируется в центр экрана а див оверелей появляется dispaly:block и затемняет экран. По принципе как в лайт боксах. Потом кликаем один раз на див оверлей он скрывается а второй див удаляется. Так вот клик на скрытие оверлея я вешаю через on(). Если вешать плагин на один элемент на странице (кнопку) то все ок, если на два то обработчик on() срабатывает 2 раза!
Точнее в конец бади оверлей добавляется сразу. А див с информацией при нажатии |
prison47, извините но пока из ваших попыток в который раз обьяснить что вы хотите , я в который раз ничего непонял, может вам не плагин нужен?
|
Цитата:
Цитата:
|
prison47,
или сделали так if(!$('#general_overlay').length){ $("<div id='general_overlay'></div>").appendTo($('body')); $('body').on('click.overPop', '#general_overlay', function(){ $(this).hide(); console.log($(this)); }); }; |
Часовой пояс GMT +3, время: 09:05. |