Плагин JQuery, Javascript - Как создать только глобальную переменную плагина JQuery или объект json и изменить ее (переменную, объект) на уровне функций - PullRequest
0 голосов
/ 09 октября 2011

Я использую JQuery: 1.6.4

Моя цель - это функция создания, которая, не давая varabiles в (), может запускать и останавливать Script.

Когда я пытался достичь .. цели .. Я нашел несколько проблем ...

  1. Специфическая переменная \ s только для плагина JQuery с доступом из функций (изменение переменных)

  2. функции move_text

Результат для div 190px и расстояния 2.5px

190, 187.5, 190 ... Мы можем .. изменить ошибку глобальной переменной

Должно быть 190, 187,5, 185 ...

Как решить эту проблему (JSON? Окно)?

Я пробовал путь с JSON, объект ... но ... я трачу много времени .. И ничего не нашел ...

Итак ... Хорошо с окном ['distance_iv']?

Вот мой код:

$.fn.emulate_marquee = function( options ) {

    var settings = {
      'ob_name': '', // object who we use...
      'direction': 'left', 
      'scroll_amount': 100, 
      'delay': 25 // Animation speed
    };

    //call in the default otions
            options = $.extend(settings, options);

            return this.each(function(options) {



                var object = $(settings.ob_name);
                window['distance_ob'] = width = object.width(); 

                //object.css(settings.direction , width + 'px'); // Set Width
                //alert(width);

                total_width  = (2 * width) / settings.scroll_amount;
                // total_width

                settings.distance = settings.scroll_amount / (1000/ settings.delay); // Calculate distance for one frame

                width_s = screen.width; // Get screen width




               next_obj = setTimeout (function(){ 
                            move_text()
                          }, 1);

               /*next_res = setTimeout (function(){ 
                            resolution_ch()
                          }, 1);

                */

                var move_text = function()
                {
                    //alert((settings.width - (i * settings.scroll_amount)) + 'px');

                    alert(window['distance_ob'] + 'px');
                    window['distance_ob'] -= settings.distance;
                    object.css(settings.direction , window['distance_ob'] + 'px');
                    alert(window['distance_ob'] + 'px');


                    if (window['distance_ob'] < total_width)
                    {
                        next_obj = setTimeout (function(){ 
                            move_text()
                        }, settings.delay); 
                    }
                    else
                    {
                       next_obj = setTimeout (function(){ 
                            move_text()
                        }, settings.delay);
                        window['distance_ob'] = width;
                    }

                }

                var resolution_ch = function()
                {
                    if (screen.width != width_s)
                    {
                        // change varabiales... for new resolution

                        width_s =  screen.width;
                        distance_ob = width = object.width();
                        alert(width_s + ' ' + object.width());
                        total_width  = (2 * width) / settings.scroll_amoun;


                        alert("Detected Change resolution.... nuke in 5 second... started...");

                    }

                    next_res = setTimeout (function(){ 
                                resolution_ch()
                               }, 1000);



                }


            });
  };

1 Ответ

2 голосов
/ 09 октября 2011

Возможно, попробуйте сохранить глобальную переменную в jQuery.data() ( ref )

Но так как может показаться, что вам может понадобиться доступ к методам извне плагина, я бы посоветовал проверить некоторые другие шаблоны плагина.

Проверьте эту удивительную «библиотеку» шаблонов плагинов jQuery .

Особенно обратите внимание на шаблоны, которые сохраняют экземпляр плагина в данных jQuery; что делается по умолчанию во всех шаблонах фабрики виджетов. Но мой личный фаворит - это "jquery.namespace.plugin -ilerplate.js"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...