2013-11-22 147 views
1

我試着去改變在我的超級鏈接點,在瀏覽器中調整大小,但我既擋住了我的全部鏈接或沒有人更改超鏈接的位置調整

var $w = window.innerWidth || document.documentElement.clientWidth; 

if ($w > 1025) { 
    $('a.something').each(function (e) { 
     e.preventDefault(); 
     location.href = "/products.html"; 
    }); 
} else { 
    $('a.something').each(function (e) { 
     e.preventDefault(); 
     location.href = "javascript:void(0);"; 
    }); 
} 

if ($w > 1025) { 
    $('.mainMenu > li').unbind().hover(function() { 
     $(this).find('.subMenu').stop().slideToggle(400); 
    }); 
} else { 
    $('.mainMenu > li').unbind().click(function (e) { 
     $(this).find('.subMenu').stop().slideToggle(400); 
    }); 
} 
+0

對不起,不明白你試圖達到什麼樣的錯誤?您的代碼中的哪個地方可以連接到resize事件?那些'.something's是什麼 - 他們是否存儲超鏈接?理想情況下,如果可能的話,準備代表你的問題的[Plunker](http://plnkr.co/)。 –

回答

3

的製作在每次調整多個DOM的變化可能很昂貴並放慢您的網站。我會建議根據瀏覽器大小決定採取什麼操作。

$(document).on('click', 'a[href]', function (e) { 
    var width = window.innerWidth || document.documentElement.clientWidth; 

    if (width < 1025) { 
     e.preventDefault(); 
    } 
}); 

這隻會在小(1025px以下)視圖大小時阻止鏈接。

$('.mainMenu > li').on('hover click', function() { 
    $(this).find('.subMenu').stop().slideToggle(400); 
}); 

您可以一次執行兩個綁定。如果你確實需要的話,你可以在這個區塊中加入相同的內容,但是我認爲在大多數情況下你都可以保持原樣。

+0

不知道我可以同時做兩個綁定,這完美地運作。至於阻止鏈接有沒有辦法改變它之前的事件或沒有事件處理程序? (在調整大小),所以如果(寬度<1025){$('a.something')each(function(e){e.preventDefault()}? – user934902

+0

你根本不需要改變href屬性。只有當在「移動」視圖中時,preventDefault纔會導致鏈接不採取任何行動。在「桌面」視圖中,鏈接將正常工作。 – ArrayKnight

+0

ok,3/7鏈接具有子菜單,因此id只針對那些3(他們有特定的類)toDefaultDefault(),但他們仍然在工作:S到目前爲止全部或全部無法工作 – user934902