плагин сохраняет вар внутри каждого возвращаемого клика - PullRequest
0 голосов
/ 10 февраля 2011

Вы, ребята, не возражаете проверить этот jsfiddle, который я сделал, чтобы помочь вам понять мою проблему. http://jsfiddle.net/kr1zmo/DqbeX/8/:

<a href="#" class="cref">item</a>
<a href="#" class="cref">item 2</a>
<a href="#" class="cref">item 3</a>
<a href="#" class="cref">item 4</a>

<p id="result"></p>


<script language="javascript" type="text/javascript">
(function($) {
    $.fn.liveBindTest = function() {
        return this['live']('click', function() {
            var savedvar;

            if (!savedvar || savedvar == 0) {
                // is false, do false things.
                savedvar = 1;
                jQuery('#result').append(savedvar);
            } else {
                // is true, do true things.
                jQuery('#result').append(savedvar);
                savedvar = 0;
            }

            return false;
        });
    };
})(jQuery);

jQuery(document).ready(function() {
    $('a.cref').liveBindTest();
});
</script>

Я хочу сохранить переменную для каждого клика.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

Взгляните на этот пример .

Вы хотите переключить какой бит кода выполнять? Если вы хотите сохранить значение в замыкании, вам нужно объявить его вне функции обработчика живых событий.

Если значение должно храниться для каждого элемента, соответствующего селектору, вы можете использовать $(elem).data() для хранения значения, как в этом примере .

2 голосов
/ 10 февраля 2011

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

Вам необходимо объявить переменную вне функции.
Если вы хотите отдельную переменную для каждого элемента, вы можете объявить переменную и добавить обработчик в вызове each или использовать функцию jQuery .data.

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