jquery - 简单脚本不适用于 jQuery 中的 .prepend() 和 .css() 方法

标签 jquery css prepend

今天我遇到了一件有趣的事情,我不太明白。这个(见下文)非常简单的 jQuery 脚本不起作用,基本上我想将前置 div 的背景颜色更改为红色,如果蓝色 == true (这是真的)。​​

var panel = $("<div id='panel'></div>");
var panelBg = $("#panel");

var test = "true";
var red  = "true";
var blue = "true";


if (test == "true") {


    if (red == "true") {

       $("#first").prepend(panel);

    }



    if (blue == "true") {

       panelBg.css("background-color","red");

    }


}

但是当我更改此行时:

  panelBg.css("background-color","red");

对此:

  $("#panel").css("background-color","red");

脚本有效。

工作演示: http://jsfiddle.net/wK2jw/

最佳答案

当您查找#panel时,它在 DOM 中尚不存在,因此该行不返回任何对象:

var panelBg = $("#panel");

当您执行 $("#panel").css("background-color","re​​d"); 时它会起作用,因为这是在您之后执行的已将 id=panel 的元素添加到 DOM 中。

即使 panelBg 在您分配它时确实起作用,panelBgpanel 引用无论如何都会指向相同的元素,所以使用两个变量来指向同一件事似乎没有任何意义。

关于jquery - 简单脚本不适用于 jQuery 中的 .prepend() 和 .css() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885035/

相关文章:

javascript - jQuery stopPropagation() 在多个子对象上

jquery - 我如何使用 jQuery 选择这个 id 属性

Jquery toggleClass 没有像我预期的那样工作

c++ - 动态数组的实现是否在开始时预留空间用于前置?

javascript - 使用jQuery检测IF悬停在元素上

JavaScript计算固定div中矩形的高度和宽度

html - 水平滚动并排放置 li 元素

javascript - .prepend 不是函数

linux - 如何在 Linux 中将一些文本 append 到文件夹中的所有文件

jquery - ko.applyBindings 导致进度条卡住