0

我在头文件中的脚本中有这个函数(由 Fireworks 生成,它可以工作):

function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; 
document.MM_sr=new Array;
   for(i=0;i<(a.length-2);i+=3)  
      if ((x=MM_findObj(a[i]))!=null){
         document.MM_sr[j++]=x; 
         if(!x.oSrc) 
            x.oSrc=x.src; 
            x.src=a[i+2];
      }
}

然后我有一张桌子,里面有一堆 td 和 trs,包括这个:

   <td rowspan="2"><a href="javascript:;" onclick="MM_swapImage('slice1_s1','','images/slice1_s2.jpg',1);"><img name="slice1_s1" src="images/slice1_s1.jpg" width="146" height="87" border="0" id="slice1_s1" alt="" /></a></td>

然后,在表格结束后,我放了这个脚本:

<script>
$("img").toggle(function(){
   $(this).MM_swapImage('slice1_s1', '', 'slice1_s2.jpg', 1); 
}, function(){
   $(this).MM_swapImage('slice1_s1', '', 'slice1_s1.jpg', 1); 
});
</script>

表格和所有内容都是 Adob​​e Fireworks 为 Web 分割内容的方式,因此这些内容也都是生成的。

这就是我想要发生的事情:当点击图片时,我希望它改变颜色(这是我准备好的第二张图片,slice1_s2.jpg)。当再次点击它时,我希望它回到原来的状态。当我对此进行测试时,没有任何反应。有什么建议么?

4

3 回答 3

0

需要注意的一点是,附加到 A 标签的 OnClick 事件将优先于您以后的脚本;我认为您的 toggle() 不会基于此触发。尝试删除 OnClick 事件,看看是否没有这样做。

于 2010-07-27T16:56:00.337 回答
0
<script>
$("img").toggle(function(){
   $(this).MM_swapImage('slice1_s1', '', 'images/slice1_s2.jpg', 1); 
}, function(){
   $(this).MM_swapImage('slice1_s1', '', 'images/slice1_s1.jpg', 1); 
});
</script>

您是否尝试放置路径或图像? “图片/”

于 2010-07-27T16:40:20.423 回答
0

我相信 Felix Kling 的评论是正确的。我不能肯定地说,因为我看不到您正在使用的所有代码 - 但这是有道理的。我拿走了你的代码并模拟了一个本地版本。我在$(this).MM_swapImage调用的位置出现错误,说对象未定义。删除后$(this).,我得到了一个不同的错误MM_swapImage(因为我没有所有代码),但这表明了问题的根源。

但是我有一个问题是为什么不直接使用 jQuery 的toggle方法来换出图像?你可以这样做:

$("img").toggle(function(){
    $(this).attr("src", "slice1_s2.jpg");
}, function(){
    $(this).attr("src", "slice1_s1.jpg");
});

不确定是否必须使用 MM_swapImage。

Felix Kling 应该得到正确答案。我只是想投入使用toggle来交换您的图像。

希望这可以帮助!

于 2010-07-27T17:07:08.957 回答