2011-01-21 50 views
2

如何将以下所有变量分组为使用sigle show()或hide()来代替每个请求的单独调用?谢谢。jQuery - 如何在使用show()或hide()时对多个变量进行分组?

var alertsLink = "alertsLink"; 
var alertsLinkId = $j("#" + alertsLink); 
var modifyLink = "modifySearch"; 
var events = $j("#eventsPanel"); 
var alerts = $j("#alertsPanel"); 
var results = $j("div.results"); 

if(id == eventsLink){ 
    events.show(); 
    alerts.hide(); 
    results.hide(); 
    eventsLinkId.hide(); 
    alertsLinkId.show(); 
    }else if(id == alertsLink){ 
    events.hide(); 
    alerts.show(); 
    results.hide(); 
    alertsLinkId.hide(); 
    eventsLinkId.show(); 
    }else if(id != modifyLink){ 
    events.hide(); 
    alerts.hide(); 
    results.show(); 
    alertsLinkId.show(); 
    eventsLinkId.show(); 
    } 
} 

回答

1

如果你想继续使用的变量,而不是垃圾,有很多神奇的字符串的代码,那么你可以做:

events.add(alertsLinkId).show(); 
alerts.add(results).add(eventsLinkId).hide(); 
1

您可以组合选择,像这样:

$j("div.results, #alertsPanel")… 
0
if(id == eventsLink){ 
    $j("#eventsPanel, #alertsLink").show(); 
    $j("#alertsPanel, div.results").hide(); 
} 

你可以做这样太:

$j('#eventsPanel, #alertsLink, #alertsPanel, div.results).hide(); 
switch (id) 
{ 
case 'eventsLink': $j("#eventsPanel, #alertsLink").show(); break; 
case 'alertsLink': $j("#alertsPanel").show(); break; 
default: $j("div.results, #alertsLink").show(); break; 
} 

保持你的if/else也工作;)

+0

我不想'硬编码每一行,因为有多个条件来操纵。只是想知道如何使用parametres而不是选择器进行调用。 – Bongbong 2011-01-21 11:29:22

+0

@Bongbong:像我的编辑? :S – Shikiryu 2011-01-21 11:37:10