この(jQuery)関数は、jQuery(document).ready
とjQuery(document).resize
で呼び出されます。 ready
の状態で正常に動作しますが、resize
の場合、イベントはちょっと遅くなります。それらは機能を継承するか、slideToggleの場合は各サイズ変更のために一見起動します。Javascript(jQuery)イベントが失敗します。これをどうすれば解決できますか?
(function(jQuery){
jQuery.fn.responsive = function() {
// Vars
var menuButton = jQuery('nav #menu-button');
var menuItems = jQuery('nav ul');
var menuLinks = jQuery('nav ul li a.scroll');
var viewportW = jQuery(window).width();
var viewportH = jQuery(window).height();
// Menu links
menuLinks.click(function(e){
if (viewportW > 800) {
e.preventDefault();
e.stopPropagation();
var pos = jQuery(this.hash).offset().top;
jQuery('html,body').animate({scrollTop: pos}, 1000);
} else if (viewportW < 799) {
e.stopPropagation();
menuItems.slideUp('fast'); // Hide menu on click
}
});
// Menu button
menuButton.click(function(e){
menuItems.slideToggle('fast');
//e.stopPropagation();
//e.preventDefault();
});
}
})(jQuery);
私は間違っていますか?私はイベントの伝播を殺そうとしましたが、役に立たなかった。
EDIT:
// Doc ready
jQuery(document).ready(function() {
// Run functions
jQuery().responsive();
});
// On resize
jQuery(window).resize(function(){
jQuery().responsive();
});
コード内に.resize()が見えません。 – Bergi
あなたは本当に準備完了イベントやイベントのサイズを変更しようとしていますか? – Bergi