如何将 jQuery attr 变量从数组返回到它的原始对象?



我想通过jQuery找到将inital href属性返回到其原始元素的最佳方法。

我正在制作一个由列表项组成的菜单,其中包含锚标记。由于菜单项的锚点的hrefs需要等于javascript:void(0),如果它们具有.downloadtoggle类,那么当在移动/平板电脑视图中用于按钮/手风琴目的时,我需要在785px宽的浏览器窗口下交换锚点的href。

我已经成功地做到了,但挑战在于,一旦窗口恢复到桌面视图,锚点的href就需要返回到它们的原始值,一个实际的链接,而不是手风琴按钮。

我试图通过首先创建一个原始URL的全局数组来恢复原始URL,这是成功的。在它们之间循环,并将它们返回到它们自己的当前元素,这就是我正在挣扎的地方。这是我下面的东西。

提前感谢!

var links = $('a.dropdown-toggle').map(function() { return this.href }).get()
function mobileNavStyles() {
   var $containerWidth = $(window).width();
   if ($containerWidth <= 785) {
      $('.dropdown-toggle').attr("href", "javascript:void(0)"); 
   }
   if($containerWidth > 785) {
        $.each( links, function( intValue, currentElement ) {
            return $(this).attr('href', currentElement);
        });
   }
}

不要这样做:

$('.dropdown-toggle').attr("href", "javascript:void(0)"); 

保留href,但通过从事件处理程序返回false来禁用链接:

function mobileNavStyles() {
   var $containerWidth = $(window).width();
   $('.dropdown-toggle').unbind('click');
   if ($containerWidth <= 785)
      $('.dropdown-toggle').click(function(){ return false; }); 
}

编辑:如果.dropdown-toggle上有其他click处理程序,则可以使用bind并将处理程序命名为:

function mobileNavStyles() {
   var $containerWidth = $(window).width();
   $('.dropdown-toggle').unbind('click.canceller');
   if ($containerWidth <= 785)
      $('.dropdown-toggle').bind('click.canceller', function(){ return false; }); 
}

最新更新