什么可以让jQuery在第二次点击时切换两次?

时间:2010-08-13 18:03:36

标签: jquery html toggle

我有一个FireWorks生成的HTML页面,我为它添加了一些jQuery以获得所需的效果......这是一个痛苦的研究,所以当你点击一部分脊椎时,它会亮起红色。我添加了jQuery的切换,用于排序“unlick”选项,但它没有按预期工作。 (类似于我之前提出的问题,但IMO不同)。

当我第一次点击时,它会按预期点亮红色。当我第二次点击时,它返回到未被点击,然后立即返回到红色,好像两个切换事件都被触发,如此之快,就像第二次点击甚至没有注册(我知道它确实会触发;我绑定了一个带有警报的伪调试方案,以确保运行第二个函数)。关于我做错了什么的任何想法?

以下是一些相关代码:

jQuery脚本:

<script type="text/javascript">
$(document).ready(function(){
   $("img.toggle1").click(function(){
      $("img.toggle1").toggle(function(){ 
        alert('first click');
          $(this).attr('src', 'images/cervical_s7.jpg');
      }, function(){ 
          alert('second click');
          $(this).attr('src', 'images/cervical_s1.jpg');
      });
   });
});
</script>

生成HTML的值得注意的片段(包含切片创建的图像的表格,以及切片创建的图像地图。我删除了onclick行为代替切换,onMouseOver用于对不同图像产生影响):

   <td rowspan="2"><img name="cervical_s1" class="toggle1" src="images/cervical_s1.jpg"
    width="185" height="121" border="0" id="cervical_s1" usemap="#m_cervical_s1"
    alt="" /></td>

<map name="m_cervical_s1" id="m_cervical_s1">
<area shape="poly" class="toggleCerv" coords="159,0,154,29,151,57,154,95,165,
       113,185,121,0,121,14,111,23,93,24,43,19,0,48,7,96,7,140,3,159,0,159,0" 
       href="javascript:;  alt="" onmouseover="MM_swapImage
       ('sign_s1','','images/sign_s2.jpg',1);"  /> </map>

tl; dr - jQuery切换似乎在第一次点击后发射两次,因此它停留在切换位置#2。

编辑:当我再次点击时,我会收到3个交替警报,然后是4个交替警报等。感谢您提供有用的评论。希望这样可以更容易理解?

谢谢!

1 个答案:

答案 0 :(得分:2)

查看http://api.jquery.com/toggle/

您无需注册click()

所以而不是:

$("img.toggle1").click(function(){
      $("img.toggle1").toggle(...);
   });

$("img.toggle1").toggle(...);