1

我有一个下拉功能的动态下拉菜单,我想添加更多功能。菜单是页面导航,将鼠标悬停在链接上会更改内容区域中图像的来源,从而反映活动链接。这是一个简单的 attr(src) 更改。

我添加了一些代码来淡出活动图像,将源更改回默认值,并在离开菜单时淡入淡出,但想在 If/Else 语句中框定该代码;如果图像的源与默认值没有变化,则防止图像淡出并重新出现。

语法似乎正确,但功能无法正常工作。我相对较新,可能会遗漏一些东西。对于功能更可靠的代码的任何建议,我将不胜感激!

谢谢你的时间,丹尼尔


else 语句中嵌入的函数(淡出、更改源、淡入)按我的意愿工作。

$("#trigger").mouseleave(function(){
    var img = $("#img_home");
    if (img.src = "Images/IMG_4663_bw.jpg"){
      img.noop();
    } else {
      img.fadeOut(1000, function(){
         img.attr("src","Images/IMG_4663_bw.jpg");
         img.fadeIn(1000);
      });
    }
});
4

4 回答 4

3
if (img.src = "Images/IMG_4663_bw.jpg")

您正在分配价值,您需要==操作员,而不是=操作员。
如果您只是在寻找else条件,只需反转条件:

if (img.attr('src') != "Images/IMG_4663_bw.jpg") {
    // fade and stuff
}
于 2011-01-04T23:35:21.363 回答
1

img是一个 jQuery 对象。
您需要通过调用来访问其属性img.attr('src')

您的if条件分配img财产;要检查相等性,您需要使用==(相等)或===(严格相等)运算符。

jQuery的noop方法是静态方法;你通过写作来称呼它jQuery.noop()

最后,打电话根本没有意义noop()。首先,里面没有语句的空大括号没有什么问题:if (something) { } else { ... }
此外,您可以反转if条件并摆脱else

if (img.attr("src") === "Images/IMG_4663_bw.jpg") {
  img.fadeOut(1000, function() {
     img.attr("src", "Images/IMG_4663_bw.jpg").fadeIn(1000);
  });
}
于 2011-01-04T23:34:17.450 回答
0

尝试

$("#trigger").mouseleave(function(){
var img = $("#img_home"); 
 if (img.src == "Images/IMG_4663_bw.jpg"){
  img.noop(); 
 } 
 else {
  img.fadeOut(1000,function(){
  img.attr("src","Images/IMG_4663_bw.jpg");
  img.fadeIn(1000); 
  }); 
 } 
});

不同之处在于将该源与图像路径字符串进行比较。它应该是'=='

于 2011-01-04T23:32:49.807 回答
0

语法不正确。您需要==if()语句中代替=,它执行赋值而不是比较。

此外,为了直接访问src属性,您需要从 DOM 元素中进行操作。您可以使用从 jQuery 对象[0]中获取第一个。img

if (img[0].src == "Images/IMG_4663_bw.jpg"){
    $.noop(); // The noop is called from the global jQuery object.
    //...
于 2011-01-04T23:33:12.503 回答