我有一个搜索结果网页,它将结果分成多个页面。当用户从一个搜索结果页面导航到下一个搜索结果页面时,我没有重新加载整个页面,而是使用 jQuery ajax 调用来获取页面(通过“GET”请求),提取包含搜索结果的元素,然后换掉html。
这很好用,但我发现我的 background-image CSS 属性有问题。一些背景图像名称包含空格,因此我将 url 用引号括起来,如下所示:
<div style="position: absolute; right: 0; bottom: 0;
width: 30px; height: 30px;
background-image: url('Images/Image One_small.png');
background-repeat: no-repeat;"
title="Image One">
</div>
但是,当我通过 jQuery 函数重新加载 HTML 元素时.html()
,似乎 HTML 被重新格式化(包括去除引号),如下所示:
<DIV style="BACKGROUND-IMAGE: url(Images/Icons/Image One_small.png); POSITION: absolute; WIDTH: 30px; BOTTOM: 0px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 30px; RIGHT: 0px" title="Image One"></DIV>
Chrome 似乎处理得很好,但 IE8 令人窒息(无法解析背景图像)。
该html()
函数是否重写 HTML 或 CSS 属性?如果是这样,是否有更好的解决方案?我不想重命名图像,因为名称是由用户输入驱动的(可以合法地包含空格)。
这是我的ajax调用:
var l_url = "SearchResults.aspx?pg=" + pageNo;
$.ajax({
type: "GET",
dataType: "html",
url: l_url,
beforeSend: function(jqXHR, settings) {
$("#WhiteoutDiv").css("display", "block");
},
success: function(data, textStatus, jqXHR) {
$("#SearchResultsDiv").html($("#SearchResultsDiv", data).html());
$("#WhiteoutDiv").css("display", "none");
// The below line is for debugging. It selects one of the search result
// elements and displays the html so I can see what's going on. Chrome's
// developer tools give conflicting results.
alert($(".ReportItem", data).html());
},
error: function(textStatus, jqXHR) {
window.location = l_url;
}
})
附录
需要明确的是,在通过 jQuery AJAX 重新加载 DIV 之前,一切都运行良好(并且与我的旧的非 jQuery AJAX 实现完美运行)。路径正确,并且 CSS 带引号有效。将空格更改为“+”并不能解决问题。