Javascript 尝试在调整大小后将jquery设置为激发一次

Javascript 尝试在调整大小后将jquery设置为激发一次,javascript,jquery,Javascript,Jquery,有没有办法在调整大小时只触发jquery一次?我这里有一个脚本,它在锚定元素的href中添加了一个散列(#)。问题是脚本在调整大小时会一直保持不变,因此它会在href中不断添加哈希。有没有办法让它只燃烧一次 (function($){ 'use strict'; var mobileMenuDrawer = { init : function() { $('.region-primary-menu').addClass('prim

有没有办法在调整大小时只触发jquery一次?我这里有一个脚本,它在
锚定元素的
href
中添加了一个
散列(#)
。问题是脚本在调整大小时会一直保持不变,因此它会在
href
中不断添加
哈希。有没有办法让它只燃烧一次

(function($){
    'use strict';



    var mobileMenuDrawer = {

        init : function() {

            $('.region-primary-menu').addClass('primary-mobile-menu');
            $('.primary-mobile-menu .menu.-primary > .menu-item').addClass('mobile-menu-item');
            $('.primary-mobile-menu .menu.-primary > .mobile-menu-item > .link').off('click').on('click', function() {
                $(this).closest('.mobile-menu-item').toggleClass('-active');
            })
        },

        clear : function() {
            $('.primary-mobile-menu, .mobile-menu-item').removeClass('primary-mobile-menu mobile-menu-item');
        }
    }

    var addHash = {

        init : function() {

            if ($('.region-primary-menu').hasClass('primary-mobile-menu')) {

                $('.primary-mobile-menu .mobile-menu-item > .link').each(function() {
                    // console.log($(this).attr('href'));
                    let currentUrl = $(this).attr('href');

                    $(this).prop('href', '#' + currentUrl);

                    // this.href = '/#/' + this.href;
                    // window.location.hash     = $(this).attr('href');
                });
            }

            else {

                $('.primary-mobile-menu .mobile-menu-item > .link').each(function() {

                    $(this).removeAttr('#');

                });

            }
        }
    }


    $(document).ready(function() {

        if ($(window).outerWidth() <= 1024) {
            mobileMenuDrawer.init();
        }

        else {
            mobileMenuDrawer.clear();
        }

        addHash.init();


    });

    $(window).on('resize', function() {

        if ($(window).outerWidth() <= 1024) {
            mobileMenuDrawer.init();
            addHash.init();
        }

        else {
            mobileMenuDrawer.clear();
        }
    });



})(jQuery)
(函数($){
"严格使用",;
var mobileMenuDrawer={
init:function(){
$('region primary menu').addClass('primary-mobile-menu');
$('.primary-mobile-menu.menu.-primary>.menu-item').addClass('mobile-menu-item');
$('.primary mobile menu.menu.-primary>.mobile menu item>.link')。关闭('click')。打开('click',function()){
$(this).closest('.mobile菜单项').toggleClass('-active');
})
},
清除:函数(){
$('.primary-mobile-menu,.mobile-menu-item').removeClass('primary-mobile-menu-mobile-menu-item');
}
}
var addHash={
init:function(){
if($('.region主菜单').hasClass('primary-mobile-menu')){
$('.primary mobile menu.mobile menu item>.link')。每个(函数(){
//console.log($(this.attr('href'));
让currentUrl=$(this.attr('href');
$(this.prop('href','#'+currentUrl);
//this.href='/#/'+this.href;
//window.location.hash=$(this.attr('href');
});
}
否则{
$('.primary mobile menu.mobile menu item>.link')。每个(函数(){
$(this.removeAttr(“#”);
});
}
}
}
$(文档).ready(函数(){

if($(window).outerWidth()是。只需放置一个标志来检查属性是否已存在:

if(!$(this).prop('href')) {
    $(this).prop('href', '#' + currentUrl);
}
if($(this).prop('href') == "") {
    $(this).prop('href', '#' + currentUrl);
}
或者,如果财产相似:

if($(this).prop('href') != '#' + currentUrl) {
    $(this).prop('href', '#' + currentUrl);
}
或者如果属性为空(仅当属性已存在时才起作用):


如果要阻止整个代码块执行,可以使用某种自定义标志,在所需操作完成后,需要将其切换到相反的布尔值。可以在局部函数作用域中将其设置为变量,或者将其设置为
addHash
对象的属性。我将在本例中设置前者。

 let isOk = false;

 var addHash = {

    init : function() {
        if(isOk) return;

        if ($('.region-primary-menu').hasClass('primary-mobile-menu')) {

            $('.primary-mobile-menu .mobile-menu-item > .link').each(function() {
                let currentUrl = $(this).attr('href');

                $(this).prop('href', '#' + currentUrl);
                isOk = true;
            });
        }
    }
}


注意:您应该停止使用var。

我通过添加
标志或
条件尝试了第一种解决方案,但当我尝试调整大小时,它仍然继续添加
哈希值。制作一个
jsfiddle
,您可以检查它。我在这里尝试解决的问题只是想知道如何在indow将在
1024px
下调整大小,因此它将停止向
href
@clestcruz添加
散列
,我编辑了一点,我的任何解决方案现在都可以工作。您的第二个解决方案有一个额外的括号
()
我正在尝试第二种解决方案,但仍然添加了
哈希
,这很奇怪,因为
标志的目的是检查值