Вот как-то так.
<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, время: 01:03. |