jquery点击事件没有在firefox中触发

时间:2010-09-09 19:43:38

标签: jquery firefox

此功能将fancybox插件附加到某些图像。在图像滑块中单击图像时,它会在#hidden images div中打开相应的较大图像。它适用于Internet Explorer,但在Firefox(3.6.9)中不起作用。如何让它在Firefox中运行?

<script type="text/javascript">
   $(document).ready(function() {
       $("#hidden_images a").fancybox(); 
       $("#image_slider img").click(function(event) {
           var $tgt = $(event.target);
           var $desc = $tgt.attr("longdesc");
           $("#" + $desc).click();   
       });
   });
</script>

这是我的HTML:

<div id="image_slider" class="imageflow">
    <img src="images/press/charity1.jpg" longdesc="charity1"  width="250" height="250" alt="Charity 1" />
    <img src="images/press/charity2.jpg" longdesc="charity2"  width="250" height="250" alt="Charity 2" />
</div>
<div id="hidden_images">
    <a id="charity1" href="images/press/charity1_lg.jpg" style="display:none;"><img src="images/press/charity1_lg.jpg" alt="charity one caption"/></a>
    <a id="charity2" href="images/press/charity2_lg.jpg" style="display:none;"><img src="images/press/charity2_lg.jpg" alt="charity two caption"/></a>
</div>

4 个答案:

答案 0 :(得分:3)

您的问题可能是longdesc的使用,即not supported by major browsers。 Internet Explorer可能允许您向DOM无法识别的属性添加属性,而FireFox可能会禁止此行为。尝试将描述存储在alt属性中,或者如果需要,可以通过jquery的data方法存储。

答案 1 :(得分:2)

出于所有意图和目的,你可以拥有一个foo =“bar”属性并且仍然有用。这是我如何编写jquery的内部部分

<script type="text/javascript">
   $(document).ready(function() {
       $("#hidden_images a").fancybox(); 
       $("#image_slider img").click(function(event) {
           window.location = $("#" + $(event.target).attr("longdesc")).attr("href");
       });
   });
</script>

在safari,ff和chrome上为我工作。

编辑 Derr,我想我误读了你的帖子,可能不是你想要的......

编辑2 AHA时刻,以下是您的操作方法。

$("#" + $(event.target).attr("longdesc")).fancybox().trigger("click");

答案 2 :(得分:1)

我也遇到了火狐没有使用onclick事件的同样问题。

我的要求:我必须动态添加多个相册,因此我必须将每个相册的ID传递到fancybox,以便图库可以打开特定相册的图像。

我做谷歌搜索,我从this URL找到了一些技巧,但这在我的情况下不起作用。我在搜索和改变时损失了3-4个小时。最后,我在我的HTML代码中进行了一些修改,并在相册图片标签上激活oncl​​ick事件而不是锚点标签,它在Mozilla,IE-7,IE-8,Safari以及chrome中都能正常工作。

onclick="$('a.pop{$key}').fancybox().trigger('click');" 

//  { @$key = Use your dynamic id  }

我希望这对你们有所帮助。

答案 3 :(得分:0)

我遇到了类似的问题,其中click事件在firefox中不起作用,只是为了确定执行没有在&#34; span&#34;上被触发。将属性从跨度移动到&#34;按钮&#34;标签,它开始工作。

更改html:<span class="some-class"> 成为:<button class="some-class">

Javascript:

$(document).on('click','.some-class',function(){alert( "Test click event.");});

简而言之,您需要解决您正在侦听的标记的事件类型。