2011-03-25 122 views
0
$(".home").click(function(){ 
    $("#bg").removeClass("dungeonsbg bgsbg arenasbg specgearbg").addClass("homebg"); 
}); 
$(".dungeons").click(function(){ 
    $("#bg").removeClass("homebg bgsbg arenasbg specgearbg").addClass("dungeonsbg"); 
}); 
$(".arenas").click(function(){ 
    $("#bg").removeClass("homebg bgsbg dungeonssbg specgearbg").addClass("arenasbg"); 
}); 
$(".bgs").click(function(){ 
    $("#bg").removeClass("homebg dungeonsbg arenasbg specgearbg").addClass("bgsbg"); 
}); 
$(".specgear").click(function(){ 
    $("#bg").removeClass("homebg bgsbg arenasbg specgearbg").addClass("specgearbg"); 
}); 

.home,.dungeons等是一个名为navigationMenu的div中的A标签。 只是无法摆脱它,我可能会重复使用相同的逻辑来处理页面上的其他事情。理想情况下,它会从点击的东西中获得价值,并添加新的类,以便如果我添加更多链接,它会自动工作。我怎样才能把它放到一个函数中?

+0

什么是逻辑?在点击某个具有特定类的元素后,应该从'#bg'中删除所有(?)类,并为其指定被单击元素的特定类?所点击的元素是否还有其他类,或者是列出的五个类中的一个? – deceze 2011-03-25 05:58:04

回答

0

假设每次点击类仅有的一个类和#bg没有其他班比这些你可以完全覆盖#bg小号的className必要的一个:

$(".home, .dungeons, .arenas, .bgs, .specgear").click(function(){ 
    $('#bg')[0].className = this.className + 'bg'; 
}); 
+0

这对我需要的东西很有用。只是一个问题[0]是什么?那是选择#bg的第一个实例吗?如果是的话,为什么你要这么做,因为页面上只有一个id的实例。 – Corey 2011-03-30 05:18:35

+0

不,[0]是打开jQuery包装器以获取DOM HTMLElement以访问className属性,以便我们可以用'homebg','dungeonsbg'等覆盖所有类。基本上与@ deceze做了,除了他直接获得了DOM元素。 – mVChr 2011-03-30 15:38:28

+0

哦,好的谢谢澄清! – Corey 2011-03-31 00:18:18

0
$(".home, .dungeons, .arenas, .bgs, .specgear").click(function(){ 
    $("#bg").attr('class', $(this).attr('class') + 'bg'); 
}); 
0

假设中的所有元素问题只有一个类:

$('.home, .dungeons, .arenas, .bgs, .specgear').click(function() { 
    document.getElementById('bg').className = this.className + 'bg'; 
}); 
0

另一种解决办法是,像这样:

$('#navigationMenu a').click(function() { 
    $('#bg').removeClass().addClass($(this).attr('class') + 'bg'); 
}); 

这确实假设#bg没有任何类,锚只有一个类。

相关问题