jquery的javascript是否有办法调用不等于变量?

时间:2012-12-24 06:31:16

标签: jquery javascript

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

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

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

如果iboolean,请使用三元运算符

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

答案 2 :(得分:1)

我认为这就是你想要的:

$('#SiteDescriptions' + i).animate({opacity: "1"}, 500);
$('[id^=SiteDescriptions]').not($('#SiteDescriptions' +i)).animate({opacity: "0"}, 500);

答案 3 :(得分:1)

可以使用startsWith选择器和not()。此外,fadeInfadeOut与不透明度的animate相同

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

也不确定动画的三部曲...如果在同一个元素上调用另一个动画时正在进行动画的可能性,请使用stop()