我已经连续三天都在寻找答案了。问题是我有一个页面,链接上应该加载Colorbox的AJAX内容,而这些内容又包含应该在同一个Colorbox模式窗口中加载的链接。到目前为止,我设法让它(部分)通过这个工作:
<script type="text/javascript">
$(document).ready(function(){
$("a[rel='open_ajax']").live('click', function() {
$.colorbox({
href:$(this).attr('href')
});
return false;
});
});
</script>
如果我点击一个链接,它会加载一个Colorbox窗口,但是在这个窗口中,如果我点击它的链接,它会打开另一个Colorbox窗口。我希望将内容加载到当前内容中。会不会有任何想法。感谢名单!
P.S。主窗口中的链接:
<a title="Client Details" rel="open_ajax" href="http://localhost/client/details/123">Client Details...</a>
Colorbox中的链接都是相同的(它只是分页):
<a rel="open_ajax" href="http://localhost/client/details/123/1">1</a>
<a rel="open_ajax" href="http://localhost/client/details/123/2">2</a>
<a rel="open_ajax" href="http://localhost/client/details/123/3">3</a>
<a rel="open_ajax" href="http://localhost/client/details/123/4">4</a>
<a rel="open_ajax" href="http://localhost/client/details/123/5">5</a>
答案 0 :(得分:16)
如果你需要将内容加载到同一个Colorbox而不是打开一个新实例,我首先要确保打开Colorbox的事件处理程序上下文是独占的,而不是挂钩到Colorbox中的'open_ajax'元素
这样的事情:
<script type="text/javascript">
$(document).ready(function(){
$("a[rel='open_ajax']:not(#colorbox a[rel='open_ajax'])").live('click', function() {
$.colorbox({
href:$(this).attr('href')
});
return false;
});
});
</script>
如果上述方法不起作用,请尝试使选择器更具体/唯一。
然后AJAX中的新内容直接进入你已经打开的Colorbox。
这样的事情:
$('#cboxLoadedContent a[rel="open_ajax"]').live('click', function(e){
// prevent default behaviour
e.preventDefault();
var url = $(this).attr('href');
$.ajax({
type: 'GET',
url: url,
dataType: 'html',
cache: true,
beforeSend: function() {
$('#cboxLoadedContent').empty();
$('#cboxLoadingGraphic').show();
},
complete: function() {
$('#cboxLoadingGraphic').hide();
},
success: function(data) {
$('#cboxLoadedContent').append(data);
}
});
});