if语句在jQuery选择器中

时间:2016-07-22 16:32:41

标签: javascript jquery

我从DOM获得了这两个变量:

var get_category = $('#category').find('.current').attr('rel');                             
var get_subcategory = $('#subcategory').find('.current').attr('rel');

我想在这里找到我的DOM中的类并显示它

$('.filter-result').find('.'+get_category, '.'+get_subcategory ).show();

但是,只有在变量存在的情况下,我才需要在.find()内编写

3 个答案:

答案 0 :(得分:1)

我希望它能回答你的问题:

var get_category = $('#category').find('.current').attr('rel');                             
var get_subcategory = $('#subcategory').find('.current').attr('rel');

var classes = [];

if (get_category) {
    classes.push('.' + get_category);
}

if (get_subcategory) {
    classes.push('.' + get_subcategory);
}

//if get_category or get_subcategory were found
if (classes.length) {
    $('.filter-result').find(classes.join('')).show();
}

答案 1 :(得分:0)

如果您的意思是只想在get_category功能中使用get_subcategory.find,则可以使用以下内容:

var lookup = [
    get_category||"", // get_category or bust!
    get_subcategory||"" // get_subcategory or bust!
];

lookup.map(x=>"."+x);  // Add Suffix "."
lookup.filter(x=>x=="."); // Check if it's only a ".", if so remove.

$('.filter-result').find.apply(this, lookup).show(); 
// Apply variables in 'lookup'

希望这适合你。

答案 2 :(得分:0)

我喜欢Gabriels的回答,因为它非常简单,另一个选项运行良好且可扩展所有你需要做的事情就是添加另一个选择器将它添加到选择器数组中。尽管如此,使用javascripts过滤器和地图数组方法更先进一点。

var get_category = $('#category').find('.current').attr('rel');                             
var get_subcategory = $('#subcategory').find('.current').attr('rel');

var selectors = [get_category, get_subcategory];

var query = selectors.filter(function(elem) {
    if (elem) { return elem };
}).map(function(elem){ 
    return '.' + elem;
}).join(', ')

$('.filter-result').find(query).show();