原創|其它|編輯:郝浩|2012-08-20 23:16:05.000|閱讀 358 次
概述:當我在一個項目中使用Colorbox jQuery插件和ASP.NET時,遇到了一個奇怪的問題。問題不僅是Colorbox,而且還與另一位著名的插件Fancyox有關。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
當我在一個項目中使用Colorbox jQuery插件和ASP.NET時,遇到了一個奇怪的問題。問題不僅是Colorbox,而且還與另一位著名的插件Fancyox有關。如果你只打算使用插件顯示對話框,那么這個插件工作完全正常。如果你在colorbox對話框中的服務器控件(這實際上是一種在頁面上不可見的div),與ASP.NET集成的插件工作正常,但是它會阻止回傳。 ASP.NET開發人員可以認為這是一個錯誤,但實際上它是不是一個錯誤,而是一種情景錯過的插件。更多jQuery文章
我有一個按鈕,點擊“Yes”將重定向到關于頁面。現在,當你嘗試點擊一下按鈕,不會有任何回傳事件。這是因為Colorbox呈現的“div”標簽在“form”標簽外,阻礙了回傳事件。
現在要解決這個問題,你需要跳轉到Colorbox插件代碼中。添加這些內容到DOM或在頁面上的主要函數被稱為appendHTML。
function appendHTML() {
if (!$box && document.body) {
init = false;
$window = $(window);
$box = $tag(div).attr({ id: colorbox, 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : '' }).hide();
$overlay = $tag(div, "Overlay", isIE6 ? 'position:absolute' : '') .hide();
$wrap = $tag(div, "Wrapper");
$content = $tag(div, "Content").append(
$loaded = $tag(div, "LoadedContent", 'width:0; height:0; overflow:hidden'),
$loadingOverlay = $tag(div, "LoadingOverlay").add($tag(div, "LoadingGraphic")),
$title = $tag(div, "Title"),
$current = $tag(div, "Current"),
$next = $tag(div, "Next"),
$prev = $tag(div, "Previous"),
$slideshow = $tag(div, "Slideshow").bind(event_open, slideshow),
$close = $tag(div, "Close")
);
$wrap.append( // The -1x3 Grid that makes up ColorBox
$tag(div).append(
$tag(div, "TopLeft"),
$topBorder = $tag(div, "TopCenter"),
$tag(div, "TopRight")
),
$tag(div, false, 'clear:left').append(
$leftBorder = $tag(div, "MiddleLeft"),
$content,
$rightBorder = $tag(div, "MiddleRight")
),
$tag(div, false, 'clear:left').append(
$tag(div, "BottomLeft"),
$bottomBorder = $tag(div, "BottomCenter"),
$tag(div, "BottomRight")
)
).find('div div').css({ 'float': 'left' });
$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none');
$groupControls = $next.add($prev).add($current).add($slideshow);
$(document.body).append($overlay, $box.append($wrap, $loadingBay));
}
}
在上面的方法中(這是從插件中摘取的),注意該插件的重點是document.body,而為了使回傳事件工作我們需要作如下修改:
將上面
“if (!$box && document.body) {”
改為
“if (!$box && document.forms[0]) {”
以及
將上面
“$(document.body).append($overlay, $box.append($wrap, $loadingBay));”
改為
“$(document.forms[0]).append($overlay, $box.append($wrap, $loadingBay));”
完成更改后,現在是時候再次檢查了。按一下按鈕,并再次檢查。這次會被重定向到關于頁面。雖然這似乎是一個簡單的問題,但仍有一些老程序員會因為這個問題而頭痛。希望這篇文章對你有所幫助。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:翻譯