我对 jQuery 期望太高,拼命问这个问题。我应该首先决定是否在一个页面中使用一次或多次“kk-container”。为了多次加载“kk-container”的东西,我不得不考虑这些:
- 使用类选择器而不是 id 选择器来设计 CSS。
- 像这个问题一样为我的 HTML 元素生成随机 id 。
- 编写我的 javascript 函数,以便它们与那些随机 id 兼容。
因此,在带有 jQuery 加载的页面中加载“kk-container.aspx”不会导致任何 id 冲突。
无论如何,我做错了,不想重写我的代码。我找到了一个解决方案,可以在我的 Default.aspx 页面中毫无问题地加载“kk-container.aspx”的内容。我使用 iframe 而不是 jQuery 加载函数。
由于已经有一个 id 为“kk-action”的项目,
<a href="#" id="kk-action">Action</a> (like this one)
加载具有 id 为“kk-action”的项目的内容会导致麻烦。
$("#mycontainer").load("kk-container.aspx?id=" + recordID); //troublesome method.
而是创建一个没有边框的 iframe 并将该内容加载到 iframe 中。
function btnEdit_Click(recordID) {
$('#mycontainer').html("");
var kayitKutusuFrame = document.createElement("iframe");
kk-Frame.setAttribute("id", "kk-iframe");
kk-Frame.setAttribute("src", "kk-container.aspx?id=" + recordID);
kk-Frame.setAttribute("class", "kk-iframe"); //For border: none;
kk-Frame.setAttribute("frameBorder", "0");
kk-Frame.setAttribute("hspace", "0");
kk-Frame.setAttribute("onload", "heightAdapter();"); //For non-IE
document.getElementById("Mycontainer").appendChild(kk-Frame);
if (isIE = /*@cc_on!@*/false) { //For IE
setTimeout(function () { heightAdapter() }, 500);
}
}
我没有给“kk-iframe”随机ID,因为我不会多次使用它。它现在驻留在 FaceBox 中。为了使 iframe 完美无缺,它需要自动调整大小。我的 heightAdapter() 函数会做到这一点。不仅当内容加载到 iframe 中时,内容也会因为我的点击而动态变化。
这是Guy Malachi调整 iframe 大小以适应内容的实际代码。
function calcHeight(content) {
//find the height of the internal page
var the_height = content.scrollHeight;
//change the height of the iframe
document.getElementById("kk-iframe").height = the_height;
}
这是我的 heightAdapter() 函数,它在加载内容和单击导致内容扩展的内容时都可以使用。
function boyutAyarlayici() {
var content=document.getElementById("kk-Frame").contentWindow.document.body;
calcHeight(content);
if (content.addEventListener) { //Forn non-IE
content.addEventListener('click', function () {
calcHeight(content);
}, false);
}
else if (content.attachEvent) { //For IE
content.attachEvent('onclick', function () {
calcHeight(content);
});
}
}
以下是中继器中的链接。由于链接将被复制,因此它应该具有由 asp 服务器唯一的 id。
<a href="#mycontainer" rel="facebox" id='btnEdit-<%# Eval("ID") %>'
onclick='btnEdit_Click(<%# Eval("ID") %>); return false;'>Düzenle</a>
现在,每当我单击其中一个副本链接时,可以将具有 id 为“kk-action”的项目的内容加载到我的完美 iframe 中,该 iframe 将在“mycontainer”中创建。
<div id="mycontainer" class="kk-iframe" style="display:none"></div>
内容将显示在我的花哨的 FaceBox 中。