3

似乎应该有一个简单的方法来做到这一点。我正在其他一些元素上切换类名,并将此更改与该操作联系起来。我有启动淡入的 i 变量集,但想淡出可能存在的其他编号 ID。有没有一种快速的方法来做到这一点,也许是一个符号,说要对不等于这个 i 变量的任何东西进行更改?或者在我开始淡入之前执行操作的通用数字符号?

$('#SiteDescriptions' + i).animate({opacity: "1"}, 500);
$('#SiteDescriptions' + !i).animate({opacity: "0"}, 500);
4

4 回答 4

4

不要使用 id 并依赖选择器。而是使用类:

 $SD = $('.SiteDescription'); // cache jquery object
 $SD.on('click',function(){
     // fade out all with this class
     $SD.stop().animate({opacity:0},500);
     // fade in new active element 
     $(this).stop().animate({opacity:1},500);
 });

如果您尝试选择除该 id 之外的任何内容,您将选择页面上不是它的每个元素。我不认为那是你想要的。

不要这样做,以课堂方式进行,但这更接近您的要求:

$('#SiteDescriptions'+i).animate({opacity : 1 },500)
 // I don't want to speculate on your dom structure, but if you are using id's
 // you still need a way to prevent from fading out everything on the page that
 // isn't the new action. So I am assuming that all the #SiteDescriptions are siblings
.siblings().not('#SiteDescriptions'+i).animate({opacity: 0}, 500);
于 2012-12-24T06:37:00.923 回答
1

可以使用startsWith选择器和not(). 也fadeIn和与不透明度fadeOut相同animate

var site = $('#SiteDescriptions' + i).stop(true,true).fadeIn( 500);
$('div[id^="SiteDescriptions"]').not(site).stop(true,true).fadeOut(500)

也不确定是什么触发了动画...stop()当您在同一元素上调用另一个动画时,如果有可能动画正在进行,请使用

于 2012-12-24T06:50:55.710 回答
1

我认为这就是你想要的:

$('#SiteDescriptions' + i).animate({opacity: "1"}, 500);
$('[id^=SiteDescriptions]').not($('#SiteDescriptions' +i)).animate({opacity: "0"}, 500);
于 2012-12-24T06:49:28.297 回答
1

如果iboolean,使用三元运算符

$('#SiteDescriptions' + i).animate({opacity: (i) ? "1" : "0" }, 500);
于 2012-12-24T06:33:56.247 回答