如何从数组中获取每个硬编码选择器并使用jQuery hide()方法隐藏它?
function hideAllExcept(except) {
//Create an array to contain all of the sub navigation elements
var sub_navigation = new Array();
//Get each sub ul element of the main ul and push it to the previously created array
$('#navigation_sub ul').each(function(index, element) {
sub_navigation.push('$("#' +this.id+'")');
});
var x = sub_navigation.length;
for(var i = 0; i < x; i++) {
$(sub_navigation).each(function(index, element) {
$(sub_navigation)[0].hide();
alert(element);
alert(this);
this.hide();
})
}
}
答案 0 :(得分:2)
您不需要保存ID,只需缓存包含这些元素的jQuery对象。
var $subnav = $('#navigation_sub ul');
...
$subnav.hide();
我注意到您实际上没有使用except
参数。如果它是一个合法的选择器,你可以这样做:
$subnav.not(except).hide();
这可以让你的整个功能就这样:
function hideAllExcept(except) {
$subnav.not(except).hide();
$(except).show(); // assuming that you want to make this one visible
}
答案 1 :(得分:0)
改变这个:
sub_navigation.push('$("#' +this.id+'")');
对此:
sub_navigation.push("#" +this.id);
而且:
$(sub_navigation)[0].hide();
对此:
$(element).hide();
并删除不需要的for循环,因为您使用.each
循环。
但是有更好的方法可以解决这个问题。就像缓存jQuery对象一样,@ Alnitak建议
答案 2 :(得分:0)
不确定您要完成的是什么,但这会将选择器硬编码为数组,然后隐藏每个元素。
// hardcode selectors
var subnav_elements = ["ul#subnav1", "ul#subnav2", "ul#subnav3"];
// for each subnav element, hide it!
$(subnav_elements).each(function(){
$(this).hide();
});