你们介意检查我为帮助你理解我的问题所做的这个问题。 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>
我想为每次点击保存一个变量。
答案 0 :(得分:2)
您在事件处理程序中声明了您的变量,为每个处理程序创建了一个单独的局部变量。
您需要在函数外声明变量
如果你想为每个元素分别使用一个变量,你可以声明变量并在each
调用中添加处理程序,或者使用jQuery的.data
函数。
答案 1 :(得分:2)
查看 this example 。
您想要切换要执行的代码位吗?如果要在闭包中保存该值,则需要在实时事件处理函数之外声明它。
如果需要为选择器匹配的每个元素保留值,则可以使用$(elem).data()
来存储值,如 example 。