【发布时间】:2012-04-03 00:41:46
【问题描述】:
嘿,我是 jquery 的新手,过去几个小时我一直在努力解决这个问题……我到底做错了什么?我想做的就是改变一个div的innerHTML。
$("left_menu_bar").innerHTML = "You clicked me!";
但是当我使用该代码 init 调用函数时,div 根本没有改变。
【问题讨论】:
标签: jquery
嘿,我是 jquery 的新手,过去几个小时我一直在努力解决这个问题……我到底做错了什么?我想做的就是改变一个div的innerHTML。
$("left_menu_bar").innerHTML = "You clicked me!";
但是当我使用该代码 init 调用函数时,div 根本没有改变。
【问题讨论】:
标签: jquery
这样做:
// referencing by id
$("#left_menu_bar").html("You clicked me!");
// referencing by class name ( will apply to all div's with this class )
$(".left_menu_bar").html("You clicked me!");
【讨论】:
$("#left_menu_bar").html("you clicked me");
jQuery 总是返回一个 jQuery collection——而不是一个 DOM 元素。为了直接访问 DOM 属性,您需要从集合中检索一个元素:
$(".left_menu_bar").first().innerHTML = "You clicked me!";
然而,这不是很方便,helmus 的回答描述了事情通常的完成方式。
【讨论】:
您正在尝试将一些文本分配给没有名为 innerHTML 的属性的对象上的名为 innerHTML 的属性。
jQuery 中的 $ 函数不返回 DOM 元素。它返回一个 jQuery 对象,它提供了在特定的 DOM 元素上执行所有精彩的 jQuery 函数的能力。
jQuery 对象公开的函数之一是.get(),它将返回它包含的元素之一。
所以在你的情况下,你可以这样做:
// 0 means it will return the first element in the jQuery object
$("left_menu_bar").get(0).innerHTML = "You clicked me!";
或者正如@helmus在他的回答中所说,您可以使用jQuery提供的.html()函数来设置内部实际使用innerHTML的内容。
【讨论】:
因为 left_menu_bar 不是元素,所以不能这样选择。
如果是元素的ID,试试:
$("#left_menu_bar").html("You clicked me!");
如果是元素的类,试试:
$(".left_menu_bar").html("You clicked me!");
【讨论】: