我想解决以下问题:给定网页上的链接,我想用另一个页面的div
元素的内容替换指定的div
元素的内容。比如说,只需将Google学术搜索页面中的“站在巨人的肩膀上”加载到我现有的div
元素中。
最新,如果实施以下示例:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<a href="http://www.whatsmyip.org/">Click me</a>
<div id="myid">Text to be replaced</div>
<script type="text/javascript">
$("a").click(function() {
$.get(this.href, function(data) {
$("#myid").replaceWith($(data).find("#fb-root"));
});
previous_page = location.href;
window.history.pushState({page: $(this).index()}, $(this).html(), $(this).attr('href'));
return false;
});
window.onpopstate = function(event) {
location.reload();
}
</script>
</body>
</html>
我已添加window.history
以更改位置栏中的网址,并允许用户在没有新内容的情况下恢复网页的先前状态。
现在,我有两个问题:
<code>div</code>
元素的替换似乎不起作用,因为载入了WhatIsMyIP的整个页面。window.onpopstate
会不断触发。感谢您的帮助!
答案 0 :(得分:2)
关于你的第一个问题
试试这个
$('#myid').load(this.href + ' #fb-root');
而不是
$.get(this.href, function(data) {
$("#myid").replaceWith($(data).find("#fb-root"));
});
答案 1 :(得分:2)
您可以在超链接上合并click
和$.load
:
$('a').click(function(e){
$('#myid').load($(this).attr('href'));
e.preventDefault(); //needed to prevent navigation!
});
如果您想在页面中使用特殊元素,则可以附加任何选择器。例如:
$('#myid').load($(this).attr('href') + ' div');
这将追加所请求页面的所有div。
答案 2 :(得分:1)
尝试在event.preventDefault()
return false;
答案 3 :(得分:0)
如果我理解正确,你只想将page1上指定div元素的内容(在本例中为ID为“myid”的div元素)替换为page2中div元素的内容(第2页是http://www.whatsmyip.org/)的
希望这可能有所帮助:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<a href="http://www.whatsmyip.org/">Click me</a>
<div id="myid">Text to be replaced</div>
<script type="text/javascript">
$("a").click(function() {
$.get(this.href, function(data) {
var target_element_id_page2 = "element_id_page2";
var target_element_type_page2 = "div";
var respond= $('<div>' + data + '</div>');//You forgot this... It won't work unless you use it...
var target_element = respond.find( target_element_type_page2 + '#'+ target_element_id_page2 )[0]; //There "might" be more div elements with the same id: that's why you specify index
var container = document.getElementById( "myid");
container.innerHTML = target_element.innerText;
}, "html");
</script>
</body>
</html>
我拿出了window.history.pushState和window.onpopstate来更好地回答你的问题,而这两个代码可能没有任何错误。如果你把这些放回来它应该完美。虽然我不明白你为什么使用“previous_page = location.href;”。 previous_page未声明,之后您没有使用它。如果我错了,请纠正我......