0

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

我正在研究一个由列表项组成的菜单,其中包含锚标记。由于菜单项的锚点的 hrefs 需要等于 javascript:void(0) 如果它们具有 .dropdown-toggle 类,因此在移动/平板电脑视图中用于按钮/手风琴目的时,我需要在宽度低于 785px 时换出锚点的 hrefs浏览器窗口。

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

我试图通过首先创建一个成功的原始 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);
        });
   }
}
4

1 回答 1

0

不要这样做:

$('.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; }); 
}

编辑:如果您有其他click处理程序,.dropdown-toggle您可以使用bind并命名您的处理程序,如下所示:

function mobileNavStyles() {
   var $containerWidth = $(window).width();
   $('.dropdown-toggle').unbind('click.canceller');
   if ($containerWidth <= 785)
      $('.dropdown-toggle').bind('click.canceller', function(){ return false; }); 
}
于 2013-07-24T16:24:36.283 回答