2016-07-22 44 views
-3

我是从DOM得到那些2个瓦尔内声明:如果jQuery选择

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()只有在存在

+2

只有当存在哪个变量?请详细说明 – zzzzBov

+0

@zzzzBov:我假设他的意思是'get_category'和/或'get_subcategory'。 –

+1

@RocketHazmat,你知道他们对承担事情的人说什么...:p – zzzzBov

回答

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(); 
} 
+0

不,它不是正确的,你确定你的意思('.get_category')?它看起来不像是什么假设是 –

+0

我需要找到多个类的div例如:$('。filter-result')。find('。category.sub'); –

+0

@NelsonDenver ** find **调用里面的那些类,它们来自哪里?你的意思是在**#category **和**#子类**的rel属性中找到的元素应该有一个类,并且这个元素的类应该被添加到** find **方法中? –

0

如果你的意思是你只想在.find功能使用get_categoryget_subcategory,那么你可以使用以下命令:

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' 

希望这对你的作品。

0

我喜欢加布里埃尔回答,因为它非常简单另一个选项,运作良好,可扩展所有你必须添加另一个选择器将其添加到选择器数组。尽管如此,使用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();