2015-01-11 116 views
0

我一直在試圖弄清楚我的測試代碼有什麼問題。 preventDefault()不起作用。警報即將到來,但鏈接正在遵循。我的代碼有什麼問題?JQuery導航欄preventDefault不起作用

<html> 
    <head> 
    <title>JQuery Testing</title> 
    <script type="text/javascript" src="./jquery-1.10.2.min.js"></script> 
    </head> 
    <body> 
    <a href="#" class="Links1" id="link1" onclick="nav_bar($(this));">Nav Bar Link 0</a><br/> 
    <script type="text/javascript"> 
     function nav_bar(thisObject){ 
     var $objectID = thisObject.attr("id"); 
     var $objectClass = thisObject.attr("class"); 
     alert("A Link with Class : " + $objectClass + ", And ID Of : " + $objectID + " Was. Clicked!"); 
     thisObject.preventDefault(); 
     } 
    </script> 
    </body> 
</html> 
+0

你已經通過了一個jQuery對象,它不是'preventDefault'方法。你也必須傳遞'Event',它具有上述方法。 – Teemu

回答

0

方法preventDefauls屬於事件,而不是對象。 我定你的代碼:

function nav_bar(e, thisObject) { 
 
var $objectID = thisObject.attr("id"); 
 
var $objectClass = thisObject.attr("class"); 
 
alert("A Link with Class : " + $objectClass + ", And ID Of : " + $objectID + " Was. Clicked!"); 
 
e.preventDefault(); 
 
} 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<html> 
 
<head> 
 
    <title>JQuery Testing</title> 
 
    <script type="text/javascript" src="./jquery-1.10.2.min.js"></script> 
 
</head> 
 
<body> 
 
<a href="#" class="Links1" id="link1" onclick="nav_bar(event, $(this));">Nav Bar Link 0</a><br/> 
 
</body> 
 
</html>

+0

修復它。亞歷山大達揚。非常感謝!! – James

+0

不客氣:)請不要忘記接受答案。 –

0

正如你所連接使用onclick屬性的情況下,你需要return false防止默認行爲:

<a href="#" class="Links1" id="link1" onclick="return nav_bar(this);">Nav Bar Link 0</a><br/> 
function nav_bar(thisObject) { 
    var $el = $(this); 
    var $objectID = $el.attr("id"); 
    var $objectClass = $el.attr("class"); 
    alert("A Link with Class : " + $objectClass + ", And ID Of : " + $objectID + " Was. Clicked!"); 
    return false; 
} 

或者,如果你通過jQuery附上您的事件,你可以使用preventDefault ,但請注意,需要在事件上調用它,而不是引發事件的元素:

<a href="#" class="Links1" id="link1">Nav Bar Link 0</a><br/> 
$('#link1').click(function(e) 
    e.preventDefault(); 
    var $el = $(this); 
    var $objectID = $el.attr("id"); 
    var $objectClass = $el.attr("class"); 
    alert("A Link with Class : " + $objectClass + ", And ID Of : " + $objectID + " Was. Clicked!"); 
} 
+0

我希望允許系統爲多個答案投票。你的回答真的教會了我一些新的@Rory McCrossan。非常感謝你! – James