JQuery隐藏/显示出错



下面是我正在处理的一个简化示例,它围绕着预先存在的代码:

基本上,我有两个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()的操作。但我的尝试都失败了。希望我的例子没有让人困惑,任何帮助都是值得感激的!

我认为你可以这样做:

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

这将允许你直接编辑元素,这样你就可以做一些事情,比如:

$new_div.prepend(blue_html);

要更改id,请执行以下操作:

$new_div.attr('id', blue_stage)

注意,当你这样设置id时,你不需要"#",因为另一个答案提到

请记住,在选择时使用散列标记#,但在节点上设置为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);

(没有标签)。

希望你的问题也能轻松解决!祝你好运

相关内容

最新更新