0
$(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

4 回答 4

1

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

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

这是一个非常简单的例子。


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

但是,您可以像这样设置属性:

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

并像这样访问它:

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

这是一个工作示例


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

于 2013-03-07T16:41:48.427 回答
1

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

$("ul:first li")

这样,您将选择页面中第一个列表中的所有行。

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

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

并检索数据:

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

有关数据方法的更多信息。

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

于 2013-03-07T16:49:39.983 回答
0

数字 1.x是一个 jQuery 对象,您向该实例添加了一个name属性,然后您正在使用name它,尽管它没有被定义。

如果要更改使用 jQuery 获得的元素的属性,方法是:

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

2号。不,您不必这样做,$前缀只是使代码更具可读性的约定。
在 jQuery 中使用带有变量的 $ 背后有什么具体原因吗

于 2013-03-07T16:41:38.990 回答
0

使用来自@musefan answer的选择器,您可以获取返回的集合,并使用该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");
});
于 2013-03-07T16:50:48.900 回答