插件在每次返回的点击内保存var

时间:2011-02-09 22:51:00

标签: javascript jquery xhtml

你们介意检查我为帮助你理解我的问题所做的这个问题。 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 个答案:

答案 0 :(得分:2)

您在事件处理程序中声明了您的变量,为每个处理程序创建了一个单独的局部变量。

您需要在函数外声明变量 如果你想为每个元素分别使用一个变量,你可以声明变量并在each调用中添加处理程序,或者使用jQuery的.data函数。

答案 1 :(得分:2)

查看 this example

您想要切换要执行的代码位吗?如果要在闭包中保存该值,则需要在实时事件处理函数之外声明它。

如果需要为选择器匹配的每个元素保留值,则可以使用$(elem).data()来存储值,如 example