从数组中获取硬编码的jquery选择器并隐藏它?

时间:2013-03-25 17:25:36

标签: javascript jquery

如何从数组中获取每个硬编码选择器并使用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();
    })

}
}

3 个答案:

答案 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();
    });