我想在我的网站上使用内联加载(通过AJAX),同时为无法访问Javascript(如果它们仍然存在)的人保留(某些)功能。
我的菜单:
<?php
echo "<h3 id='title'></h3>";
if (empty($_SESSION['uid'])) {
echo "<a href='index'>Home</a> <br> ";
echo "<a href='register'>Register</a> <br> ";
echo "<a href='login'>Log In</a> <br> ";
echo "<a href='browser'>Browse MarketPlace</a> <br> ";
echo "<a href='support'>Support us!</a>";
}
elseif (!empty($_SESSION['uid'])) {
echo "<a href='index'>Home</a> <br> ";
echo "<a href='overview'>Account Overview</a> <br> ";
echo "<a href='browser'>Browse MarketPlace</a> <br> ";
echo "<a href='sell'>Sell Items</a> <br> ";
echo "<a href='logout'>Logout</a> <br> ";
echo "<a href='support'>Support us!</a>";
}
?>
我的Javascript:
$(document).ready(function() {
$(document).on("click", "a", function(event) {
var dataUrl = $(this).attr("href");
if (dataUrl != "") {
loadPage(dataUrl);
}
return false;
});
});
这是正确的方法吗?我特别担心需要阻止原始a href
调用,即原生浏览器。
当我使用<a data-url='index'>
之类的自定义内容时,它完全正常。然后我尝试了新版本,如果没有return false;
它没有按预期工作,但现在确实如此,所以我对此不太确定。
答案 0 :(得分:8)
如果调用此方法,则不会触发事件的默认操作。
$(document).ready(function() {
$(document).on("click", "a", function(event) {
event.preventDefault();
var dataUrl = $(this).attr("href");
if (dataUrl != "") {
loadPage(dataUrl);
}
});
});
答案 1 :(得分:0)