我正在尝试构建一个单页加载应用程序,即当用户单击链接时在单个页面中加载不同的页面。
例如,我有三个链接主页、新闻和联系方式,我怎样才能让它们全部加载到一个页面中,而无需转到 3 个不同的页面。
我怎样才能使用纯原生 Javascript 和 jquery 而不使用骨干或 Angular 只是纯 javascript 和无框架?
我正在尝试构建一个单页加载应用程序,即当用户单击链接时在单个页面中加载不同的页面。
例如,我有三个链接主页、新闻和联系方式,我怎样才能让它们全部加载到一个页面中,而无需转到 3 个不同的页面。
我怎样才能使用纯原生 Javascript 和 jquery 而不使用骨干或 Angular 只是纯 javascript 和无框架?
jquery 加载功能应该会有所帮助。它将 html 从 url 加载到特定的 DOM 元素中。
你可以创建一个 div 并给它一个属性 id="main"。然后在链接联系人的 onclick 事件中,您可以调用 $("#main").load('contact.html'); 等等
嘿,你在 jquery 中问它。
我会建议你在 angularjs 中的解决方案
我希望它对你有用......
只需复制过去并将其另存为“.html”并查看它的工作...
查看评论以获得更好的理解。
<!DOCTYPE html>
<html>
<head>
<!-- you need to import this script for angularjs to work -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
</head>
<body>
<!-- Adding the ng-app declaration to initialize AngularJS -->
<div id="main" ng-app>
<!-- The navigation menu will get the value of the "active" variable as a class.
The $event.preventDefault() stops the page from jumping when a link is clicked. -->
<nav class="{{active}}" ng-click="$event.preventDefault()">
<!-- When a link in the menu is clicked, we set the active variable -->
<a href="#" class="home" ng-click="active='home'">Home</a>
<a href="#" class="projects" ng-click="active='projects'">Projects</a>
<a href="#" class="services" ng-click="active='services'">Services</a>
<a href="#" class="contact" ng-click="active='contact'">Contact</a>
</nav>
<!-- ng-show will show an element if the value in the quotes is truthful,
while ng-hide does the opposite. Because the active variable is not set
initially, this will cause the first paragraph to be visible. -->
<p ng-hide="active">Please click a menu item</p>
<p ng-show="active">You chose <b>{{active}}</b></p>
</div>
</body>
</html>
这是一个例子。让我们进行 3 次不同的潜水,并给他们 3 个不同的 ID,例如“家”、“新闻”、“联系人”。现在将要加载的内容放在这些 div 中。
您的 html 代码将如下所示。
<div id="home">
<h3>Home Page</h3>
<p>Donec id elit non mi porta ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.</p>
<p>Donec id elit non mi porta ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.</p>
onec id elit non mi porta ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.</p>
</div>
<div id="news">
<h3>News Page</h3>
<p>Donec id elit non mi porta ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.</p>
<p>Donec id elit non mi porta ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.</p>
</div>
<div id="contact">
<h3>Contact Page</h3>
<p>Donec id elit non mi porta ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.</p>
<p>Donec id elit non mi porta ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.</p>
</div>
现在在导航中将如下所示
<ul>
<li ><a onClick="showDiv(1);">Home</a></li>
<li ><a onclick="showDiv(2);">News</a></li>
<li ><a onclick="showDiv(3);">Contact</a></li>
</ul>
在此之后在标题部分定义 ShowDiv() 方法
function showDiv(pageid)
{
if(pageid== 1)
{
$("#home").show();
$("#contact").hide();
$("#news").hide();
}
if(pageid== 2)
{
$("#home").hide();
$("#contact")
$("#news").show();
}
if(pageid== 3)
{
$("#home").hide();
$("#contact").show();
$("#news").hide();
}
}
在这里,您可以在一个页面中加载三个页面内容....
您可以像这样使用 Ajax:
$('#home').click(function(){
$.get('home.html', function(data){
document.write(data);
document.close();
});
});
但它不能与跨域资源一起使用,你应该使用 CORS 或 iframe。