2014-02-13 40 views
0

我有超过100个视频,我用一个函数来突出显示点击的链接。代码思想很长,我觉得必须有一种方法来将它简化为for循环或其他东西。任何想法?简化jQuery选择器高亮

var vid_all0 = $('#vid_link0, #vidtop_link0, .vidtop_link0, #vidmob_link0, #link0');  //cache selector 

vid_all0.click(function() {   
    $('[id^=vid_link],[id^=vidtop_link],[id^=vidmob_link], .vidtop_link0').css('background-color', 'inherit'); 
    vid_all0.css('background-color', '#A9CDEB'); //change color of all elements 
    $('.vidtop_link0').css('background-color', 'inherit'); 
}); 

var vid_all1 = $('#vid_link1, #vidtop_link1, #vidmob_link1,#link10'); //cache selector 

vid_all1.click(function() {   
    $('[id^=vid_link],[id^=vidtop_link],[id^=vidmob_link]').css('background-color', 'inherit'); 
    vid_all1.css('background-color', '#A9CDEB'); //change color of all elements 
}); 

var vid_all2 = $('#vid_link2, #vidtop_link2, #vidmob_link2,#link19'); //cache selector 

vid_all2.click(function() {   
    $('[id^=vid_link],[id^=vidtop_link],[id^=vidmob_link]').css('background-color', 'inherit'); 
    vid_all2.css('background-color', '#A9CDEB'); //change color of all elements 
}); 

... 它上升到15

+2

你能发布一些html? – alex

+0

为什么使用for循环?只需突出显示通过检测您的元素的id onclick点击一个。 –

+0

jquery选择器适用于循环:例如为什么在'vid_all0.click'中有'.vidtop_link0' - 第一行(下一次点击事件没有它)?和#link0,#link10,#link19'序列有什么关系? – Xeon

回答

1

给所有这些因素相同的类,然后使用与该类别的所有元素,如

$(".vidtop").on("click", function() 
{ 
    // Do something with their CSS 
}); 
0

如果您不能修改HTML与类,这样的事情应该工作:

for (var i=1; i=99; i==;) { 
    $(vid_all + i).click(function() {   
     $(this).find('[id^=vid_link],[id^=vidtop_link],[id^=vidmob_link]').css('background-color', 'inherit'); 
    }); 
} 
0

我不知道如果我ü正确理解你的代码,但这似乎是一个更简单的版本:

function doStuff(links, additional) { 
    links.click(function() { 
     $('[id^=vid_link],[id^=vidtop_link],[id^=vidmob_link]' + (additional ? "," + additional : "")).css('background-color', 'inherit'); 
     links.css('background-color', '#A9CDEB'); 
     if (additional) { 
      additional.css('background-color', 'inherit'); 
     }  
    }); 
} 

// vid_all0 
doStuff($('#vid_link0, #vidtop_link0, .vidtop_link0, #vidmob_link0, #link0'), $('.vidtop_link0')); 
// vid_all1 
doStuff($('#vid_link1, #vidtop_link1, #vidmob_link1,#link10')); 
// vid_all2 
doStuff($('#vid_link2, #vidtop_link2, #vidmob_link2,#link19')); 
// etc.