JQuery隐藏/显示出错了

时间:2012-02-14 22:02:21

标签: javascript 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()
    }
}

我已经看到很多用 Window setTimeout()以及 setinterval .queue()完成的工作。但我的尝试都失败了。希望我的例子不会令人困惑,任何帮助都会受到赞赏!

2 个答案:

答案 0 :(得分: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)。

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

答案 1 :(得分:1)

我认为你可以这样做:

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

允许您直接编辑元素,以便执行以下操作:

$new_div.prepend(blue_html);

更改你的身份:

$new_div.attr('id', blue_stage)

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