【发布时间】:2013-04-25 09:18:41
【问题描述】:
我有一个可以单击的按钮,我希望 fancybox 加载任何需要的内容,具体取决于我可以选中的一些复选框。这些复选框将改变需要在fancybox内的iframe中显示的url的值。
到目前为止,我可以让它工作一次,当我再次更改复选框时,我会看到 html 上的 url 发生变化,但fancybox 根本不会弹出。
这是我的按钮和fancybox的链接:
<button type="button" title="Compare" class="button">Compare</button>
<a class="comparefancy" style="display:none;" href="#"></a>
点击按钮时会发生以下情况:
jQuery(document).ready(function() {
jQuery('.button').click(function(){
var i=0;
var prdString="";
var prdString = jQuery.map(jQuery(':checkbox:checked'), function(n, i){
return n.value;
}).join(',');
var url='<?php echo Mage::getUrl('catalog/product_compare/index').'items/'; ?>'+ prdString + '/uenc/';
jQuery('.comparefancy').attr('href', url);//this works all the time
jQuery('.comparefancy').fancybox(); //this will only work the first time
jQuery('.comparefancy').trigger('click');
});
});
我尝试了一些类似答案的 beforeLoad 方法,但它对我不起作用。
编辑:经过更多测试后,我从链接中删除了 display none 并使其可见,然后执行以下操作:
- 选中我的复选框,然后单击按钮:第一个 fancybox 加载正常
- 选中其他复选框,然后单击按钮:链接将更改其 href 但花式不会加载。
- 手动点击链接,然后fancybox加载新的url
那么问题出在我的触发点击功能上吗?什么鬼?
【问题讨论】:
-
试试 $().triggerHandler('click');或者查看插件,也许点击事件在命名空间中,所以你必须编写类似 .trigger('click.fancy') 的东西。另外,您是否尝试过设置 fancybox 设置,即 iframe preload false 如下所示:stackoverflow.com/questions/11956547/…
-
triggerHandler 没有工作。我试过 beforeLoad 也没有用。
-
我认为我的问题是这样的:stackoverflow.com/questions/2038071/…
标签: jquery fancybox fancybox-2