我正在使用此代码创建一个 onshow 事件:
(function($){
$.fn.extend({
onShow: function(callback, unbind){
return this.each(function(){
var obj = this;
var bindopt = (unbind==undefined)?true:unbind;
if($.isFunction(callback)){
if($(this).is(':hidden')){
var checkVis = function(){
if($(obj).is(':visible')){
callback.call();
if(bindopt){
$('body').unbind('click keyup keydown', checkVis);
}
}
}
$('body').bind('click keyup keydown', checkVis);
}
else{
callback.call();
}
}
});
}
});
})(jQuery);
然后我叫它:
$(document).ready(function(){
$('.mydiv').onShow(function(){
alert('myDiv is now showing');
});
});
我还切换了触发 div 显示和隐藏的链接:
$('.myLink').click(function(){
$(".mydiv").slideToggle();
});
最后是html:
<a href="#" class="myLink">Step 1</a>
<div class="myDiv">content here</div>
问题是,当我在页面加载后单击链接时,警报只显示一次。如果我再次单击它,我将不会显示。
任何想法为什么?