Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Паттерн плагина jQuery (https://javascript.ru/forum/jquery/35576-pattern-plagina-jquery.html)

рони 16.02.2013 01:57

prison47,
$.fn.pluginNew = function(options) {
    return this.each(function(){
    if ($(this).data('on')) return;
    $(this).data('on', true)
    // do stuff
    });
}

prison47 16.02.2013 02:15

Странно но почему то не работает. Если я правильно понял нужно так?:
$.fn.pluginNew = function(options) {
    return this.each(function(){
    if ($(this).data('on')) return;
    $(this).data('on', true)
    foo.on(....);
    });
}

danik.js 16.02.2013 10:35

Странно, тот же код, но почему то работает...

<script src="//code.jquery.com/jquery-latest.min.js"></script>
<script>
    (function($) {
      
    $.fn.pluginNew = function(options) {
        return this.each(function(){
            if ($(this).data('on')) return;
            $(this).data('on', true)
            /*foo.on(....);*/alert('Че-нибудь делаем');
        });
    }
     
    } (jQuery) );
</script>
 
<button onclick="$(this).pluginNew()">Нажми меня полностью</button>

prison47 16.02.2013 14:53

Точнее я неправильно выразился :) Работать то работает но все равно дублирует

рони 16.02.2013 15:08

prison47,
код дубляжа можно?

danik.js 16.02.2013 15:10

prison47, но ведь алерт вылетает только при первом нажатии. Значит все ок :)

prison47 16.02.2013 15:27

$body.on('click.noteOverlay', '#general_overlay', function(){ 
var genThis = $(this).siblings('[data-case]');
removeOverCase(genThis);
		
		});

рони 16.02.2013 15:50

prison47,
лучше небольшое демо чем часть кода

danik.js 16.02.2013 17:19

prison47, это решение всех твоих проблем. Изучи как следует:
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 16.02.2013 19:25

Понял, спасибо буду разбираться что к чему!


Часовой пояс GMT +3, время: 14:47.