我刚刚制作了第一个隐藏内容太长的jQuery插件。
您可以在http://jsfiddle.net/denislexic/bT4dH/6/找到小提琴。
当您检查出来并单击“...”时,您会注意到第一个切换三次,第二个切换两次,第三个切换正确(只需一次)。
我不知道为什么会这样做。我试过e.preventDefault()
,stopPropagation()
等等。似乎没什么用。
以下是似乎是问题的代码:
$("." + opts.clickZoneClass).on("click", function (e) {
_debugger(1);
var element = $(this).parent('div').children('div.status');
// I know you can use is(':visible'), but it doesn't work in Internet Explorer 8 somehow...
if (element.hasClass('open')) {
_debugger(2);
element.animate({
height:element.attr('data-toggle')
}, 'fast');
//$(this).html();
element.removeClass('open');
} else {
_debugger(3);
element.animate({
height:element.attr('data-height')
}, 'fast');
element.addClass('open');
}
return false;
});
答案 0 :(得分:4)
这是因为你在$ .each循环中执行上面的代码。如果您拔出绑定代码并在插件运行良好后运行它。
我把它拉出来并将其移到文档就绪函数中以说明......
答案 1 :(得分:0)
我猜迭代元素时,click事件会多次绑定。要解决这个问题,只需在点击之前添加unbind方法即可。
$("." + opts.clickZoneClass).unbind().on("click", function (e) {
// existing stuff
});
这将解决您的问题。