2012-02-14 35 views
0

这里是我的工作,工作围绕既有代码的一个简单的例子:JQuery的隐藏/显示出了错

基本上我有2周的div我想隐藏/在多个地方(1期,展2期,3期,等等),像这样:

var blue_div = "#Blue"; 
var red_div = "#Red"; 
var blue_stage = "#Blue" + count; 
var red_stage = "#Red" + count; 

落井下石 div的页面上的其他地方存在和被隐藏。需要将内容分成每个阶段的另一个div。所以我使用.prepend()来获取内容,像这样:

var blue_html = $(blue_div).html(); 
var new_div = "#new_div"; 

$(new_div).prepend(blue_html); 
$(new_div).attr('id', blue_stage); //Changing the id based on the stage 

这最后一部分是真的什么扔我 ...至于现在,我尝试使用new_div没有先结局脚本所以它尚未在DOM ...

if ($(blue_stage).is(':hidden')) { 
    $(blue_stage).show() 
    $("#cancel").bind("click",function(){ 
     $(blue_stage).hide() 
    } 
} 

我见过)与窗口的setTimeout(做了大量以及的setInterval .queue()。但我的尝试都失败了。希望我的例子没有让人困惑,任何帮助都是值得赞赏的!

回答

1

我认为你可以做这样的事情:

var $new_div = $('<div id="' + blue_stage + '"></div>'); 

,让您直接编辑元素,所以你可以做这样的事情:

$new_div.prepend(blue_html); 

改变你的ID:

$new_div.attr('id', blue_stage) 

并注意当你设置这样的id时,你不需要“#”作为其他答案的提及

1

请记住,选择时使用散列标记#,但在节点上设置为ID时,只需使用没有此标记的标识符。所以这条线:

$(new_div).attr('id', blue_stage); //Changing the id based on the stage 

相当于此:

$(new_div).attr('id', '#Blue' + count); 

,但或许应该是这样的:

$(new_div).attr('id', 'Blue' + count); 

(不hashmark)。

希望你的问题一样容易解决!祝你好运!