在jQuery中编辑对象

时间:2013-03-07 16:38:08

标签: javascript jquery object

$(function(){
    var z = document.body.children[0];
    var x=$("li", z);
    x.name="Johnny";
    alert(x.prop(name));
});
  1. x应该是一个对象,其中包含ul中第一个body内的所有元素。 无论对象包含什么,我想添加一个带有值的属性,然后使用prop()方法来显示它 - 但这似乎不起作用。那是为什么?

  2. 我看到一个包含以下内容的脚本:var $x = $("div"); - 如果它是jQuery对象,我是否必须将$添加到变量名中?

4 个答案:

答案 0 :(得分:1)

如果您想要第一个li元素中的所有ul元素,那么这应该可以解决问题:

var elements = $("ul:eq(0) li");

Here is a very simple example of this in action.


关于设置属性,您可以执行element.name = "test",它可以正常工作。但是你需要理解的是,这是在jquery集合对象上设置name属性而不是在任何实际元素上。

然而,你可以做的是设置属性如下:

elements.prop("name", "test");

以及它的访问权限:

var name = elements.prop("name");//name will be "test"

Here is a working example


正如我在评论中提到的,您不需要使用$为变量添加前缀。但这有助于轻松查看哪些变量是JQuery对象。

答案 1 :(得分:1)

要选择页面内的第一个ul元素,您可以执行以下操作:

$("ul:first li")

这样您就可以选择页面中第一个列表中的所有行。

要在元素中存储任意数据,您可以使用方法数据,如下所示:

$("element").data('key', 'value');

并检索数据:

$("element").data('key');

More info, for the data method.

如果你真的想要添加一个属性你可以使用attr方法,它的工作方式与数据方法相同,但它会反映在DOM中。

答案 2 :(得分:0)

编号1. x是一个jQuery对象,您在该实例中添加了name属性,然后您使用name,虽然它没有定义。

如果你想改变你用jQuery获得的元素的属性,方法是:

$('selector').prop('property', 'value');
$('selector').attr('attribute', 'value');
$('selector').get(index).property = "value";

数字2.不,你不必,$前缀只是一个使代码更具可读性的惯例。
Is there any specific reason behind using $ with variable in jQuery

答案 3 :(得分:0)

使用@musefan回答中的选择器,您可以获取返回的集合,并使用attr()方法为所选的每个项目添加属性和值。但是,我稍微修改了他的选择器以实际抓住那里的“所有”元素,(以防万一未来的访问者想知道)

var elements = $("ul:eq(0)").children();
elements.attr("attrName", value);

所以如果你想设置标题:

var elements = $("ul:eq(0)").children();
elements.attr("title", "Johnny");

您可能不想提醒这些值,浏览器可能会要求您停止在页面上发送警报......但如果您确实这样做了,那么您可以在此之后投入.each()

var elements = $("ul:eq(0)").children();
elements.attr("title", "Johnny").each(function(){
     alert($(this).attr("title");
});