このコードを使用して 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>
問題は、ページが読み込まれた後にリンクをクリックすると、アラートが 1 回しか表示されないことです。もう一度クリックしても表示されません。
理由はありますか?