JavaScript:用另一个HTML中的内容替换元素
JavaScript: Replace element with content from another HTML
我想解决以下问题:给定网页上的链接,我想将指定的div
元素的内容替换为另一个页面的div
元素的内容。比如说,从Google Scholar页面加载文本"站在巨人的肩膀上"到我现有的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
是为了更改位置栏中的URL,并允许用户在没有新内容的情况下恢复Web页面的先前状态。
现在我有两个问题:
- 替换
<code>div</code>
元素似乎不起作用,因为从WhatIsMyIP加载整个页面。 - 使用Chrome时,整个页面从一开始就一次又一次地重新加载。我想,事件
window.onpopstate
是连续触发的。
谢谢你的帮助!
您可以在超链接上组合click
和$.load
:
$('a').click(function(e){
$('#myid').load($(this).attr('href'));
e.preventDefault(); //needed to prevent navigation!
});
如果想在页面中添加一个特殊元素,可以附加任何选择器。例子:
$('#myid').load($(this).attr('href') + ' div');
这将添加所请求页面的所有div。
关于你的第一个问题
试试这个
$('#myid').load(this.href + ' #fb-root');
而不是
$.get(this.href, function(data) {
$("#myid").replaceWith($(data).find("#fb-root"));
});
尝试在return false;
之前添加event.preventDefault()
如果我理解正确的话,您只是想将page1上指定的div元素的内容(在本例中div元素的ID为"myid")替换为来自page2 (page2是http://www.whatsmyip.org/)的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) {
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没有声明,之后也没有使用它。
相关文章:
- jQuery appendTo 替换元素而不是添加元素,如果正在添加的元素预先存在于列表中
- 如何用一些已编译的HTML替换元素的值
- 如何替换元素属性中的部分文本
- 替换
元素中的特殊字符的问题
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- JS如何在加载页面之前替换元素(awesomium c#)
- Javascript.替换元素“<termref/>"用规则的“;文本”;
- 替换元素中字符串的所有位置
- regex替换元素文本
- 在Javascript中,如何用变量替换元素的名称
- 如何实现 Angular 指令来替换元素,但仅限于某些情况
- 事件调用在 ajax 替换元素后多次
- 替换元素后,无法单击该元素
- jQuery查找并替换元素中的关键字
- 如何在 JavaScript 中用 DOM 操作函数替换元素内容
- .each(从html元素生成下拉列表,替换元素)
- 替换元素中的类名,但不删除此元素中的其他类纯javascript
- Javascript push()替换元素,而不是追加
- 如何替换元素标记,然后将其添加到现有元素
- 查找并替换元素's类使用jQuery