以下是我正在使用的简化示例,解决预先存在的代码:
基本上我有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()完成的工作。但我的尝试都失败了。希望我的例子不会令人困惑,任何帮助都会受到赞赏!
答案 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时你不需要“#”作为另一个答案提及