这就是为什么事情不适用于您的示例:
load()
是异步调用,所以只有在调用结束时才需要继续治疗
$hold.find('#removediv').remove()
只会选择 div,而不是实际删除它
对于您需要的代码工作,使用callback
和end
,如下所示:
<script>
$(function() {
$("#l").click(function() {
var url = 'b.htm';
$("#content").load(url + " #somediv", function(data) {
var allHtml = $(data),
newHtml = allHtml.find("#removediv").remove().end();
console.log(newHtml.html());
});
});
});
</script>
假设您有一个包含此 html 的文件:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<title>Stackoverflow example</title>
</head>
<body>
<h1>Hello</h1>
<a href="#" id="l">load content</a>
<div id="content">Empty</div>
</body>
</html>
并且b.htm
有
<div>
<div id="somediv">
<div id="removediv" class="stuff">A</div>
<div id="okdiv" class="stuff">B</div>
<div id="okdiv" class="stuff">C</div>
<div id="okdiv" class="stuff">D</div>
</div>
</div>
输出将是(在 Firefox 中,Chrome 会阻止调用b.htm
作为跨域调用,因为它是本地文件)
输出显示:
console.log('data');
console.log(data);
console.log('newHtml');
console.log(newHtml.html());
如果您需要查看这两个文件,示例在我的Dropbox上。
使用您自己的代码:
$(function() {
$('<div/>').load('page.php #somediv', function(data) {
// 'data' has the page.php #somediv part
var allHtml = $(data);
if ($.cookie('mycookie') !== null)
allHtml = allHtml.find("#removediv").remove().end();
else
document.cookie = "mycookie=1;expires=Thu, 31 Dec 2020 23:59:59 UTC; path=/"
$('#divtwo').html(allHtml);
});
});