2014-05-02 114 views
0
$('#divsT > div').hide(); //works 
$('#divsT > div').eq(xdiv).show(); //works 

我需要一个变量来代替#divsT,但有些事是错在这里:如何用变量替换div的id?

var a = $(this).parent().attr('id'); //result: xdivsT 
var b = a.replace("x", ""); // result: divsT 
var c = $('#' + b); // should be #divsT 
c > div.hide(); // doesn't work 
c > div.eq(xdiv).show(); // doesn't work 

回答

1

我只会建议你使用.find()

$(c).find('> div').hide(); 
$(c).find('> div').eq(xdiv).show(); 
+0

Satpal,有没有办法避免'c'对象。例如:'$('#'+ b)> div.hide();' – bonaca

+0

@bonaca,您可以使用'$('#'+ b +'> div')。hide();'纯字符串连接 – Satpal

+1

非常感谢,解决了 – bonaca

1

c是变量保存jQuery对象,所以你需要使用这些上下文选择之一:

$('> div', c).hide(); 
$('> div', c).eq(xdiv).show(); 
0

您可以使用它。

var a = $(this).parent().attr('id'); //result: xdivsT 
var b = a.replace("x", ""); // result: divsT 
var c = '#' + b; // should be #divsT 
$('+c+' > div).hide(); // doesn't work 
$('+c+' > div).eq(xdiv).show(); 
+0

迪帕克,我得到了错误'DIV不defined'! – bonaca