2012-08-07 38 views
0

我是一個HTML CSS設計類型誰不是用jQuery是舒適。我繼承了一個網站與我所看到的是這樣的代碼禁用鏈接默認行爲:啓用默認行爲的鏈接與jQuery

$('a').click(function(event) { 
    event.preventDefault(); 

    var locationHref = window.location.href; 
    var elementClick = $(this).attr("href"); 
    var destination = $(elementClick).offset().top; 

    $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 1000, function() { 
     window.location.hash = elementClick 
    }); 
     return false; 

我需要正常的鏈接添加到這一個頁面的網站,而不使用此代碼搞亂(它使視差滾動)。有什麼辦法可以通過鏈接做這個鏈接?

BTW我看到的這裏的解決方案,但我必須承認不是很理解他們。謝謝。

+1

如果我understend你可以代替$(「A」)用,例如$(」 MyClass的)。點擊...而且要火上面的鏈接添加一個類代碼,其他應該是正常的鏈接... – 2012-08-07 11:30:19

+0

謝謝,優雅和簡單,結束了我越來越頭痛。該網站非常小,所以沒有執行麻煩。非常感謝Alex。 – 2012-08-07 11:47:46

+0

或翻轉其頭部,並添加一個類的項目,你不想火,然後使用'$(「A:不是(.myclass)」)click' – jaypeagi 2012-08-07 12:34:15

回答

0

不知道爲什麼會有人毯禁止這樣一個網頁上的所有鏈接。不幸的是,你已經繼承了這樣的代碼。我不知道你的意思,你無法觸摸的代碼,或只是不想。

如果是前者,你有兩個選擇:

1)解除綁定的某些環節此單擊事件。例如,如果你有一個鏈接容器內,#container,或者所有的鏈接有一定的階級,.class,你可以這樣做:那麼

$('#container a').off('click'); 
$('a.class').off('click'); 

這些鏈接可以自由繼承的單擊事件處理程序。

唯一的問題是你解綁定全部點擊事件處理程序綁定到這樣的鏈接。由於繼承事件不是命名空間,所以這是不可避免的。第二個選擇是......

2)設置第二個Click事件處理程序,通過對用戶轉發到鏈接的HREF仍然繞過默認操作預防繼承處理程序:

$('a').on('click', function() { location.href = $(this).attr('href'); }); 
0

怎麼樣給這些特殊鏈接一個data-donthandle="true"屬性。然後,在jQuery中檢查這個屬性。如果該屬性存在並且爲false,則只需在事件處理程序的開始處使用return true;

這將節省您希望通過和通過javascript禁用的onclick作爲已經建議。

$('a').click(function(event) { 
    if($(this).attr('data-donthandle')) { 
     return true; 
    } 
    else { 
     event.preventDefault(); 
     //code here for handling clicks 
     alert('Stopped.'); 

     return false; 
    } 
    });​