Javascript 在jQuery中编辑对象

Javascript 在jQuery中编辑对象,javascript,jquery,object,Javascript,Jquery,Object,x应该是包含正文中第一个ul中所有元素的对象。 不管对象包含什么,我都希望添加一个带有值的属性,然后使用prop()方法来显示它-但这似乎不起作用。为什么呢 我看到一个包含以下内容的脚本:var$x=$(“div”)-如果变量名是jQuery对象,我是否必须向它添加$ 第一x是一个jQuery对象,您向该实例添加了一个name属性,然后使用name,尽管它没有定义 如果要更改使用jQuery获得的元素的属性,方法如下: $(function(){ var z = document.bod

x
应该是包含
正文中第一个
ul
中所有元素的对象。 不管对象包含什么,我都希望添加一个带有值的属性,然后使用
prop()
方法来显示它-但这似乎不起作用。为什么呢

  • 我看到一个包含以下内容的脚本:
    var$x=$(“div”)-如果变量名是jQuery对象,我是否必须向它添加
    $


  • 第一
    x
    是一个jQuery对象,您向该实例添加了一个
    name
    属性,然后使用
    name
    ,尽管它没有定义

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

    $(function(){
        var z = document.body.children[0];
        var x=$("li", z);
        x.name="Johnny";
        alert(x.prop(name));
    });
    
    2号。不,您不必这样做,
    $
    前缀只是一种使代码更具可读性的约定。

    如果您希望在第一个
    ul
    元素中包含所有
    li
    元素,那么这应该可以做到:

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


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

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

    var elements = $("ul:eq(0) li");
    
    访问权限如下所示:

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



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

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

    var name = elements.prop("name");//name will be "test"
    
    这样,您将选择页面第一个列表中的所有行

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

    $("ul:first li")
    
    以及检索数据:

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


    如果确实要添加属性,可以使用attr方法,其工作方式与data方法相同,但会反映在DOM中。

    使用@musefan answer中的选择器,可以获取返回的集合,并使用
    attr()
    方法为每个选定项添加属性和值。然而,我已经稍微修改了他的选择器,以实际获取其中的“所有”元素(以防万一未来的访问者会怀疑)

    因此,如果要设置标题:

    var elements = $("ul:eq(0)").children();
    elements.attr("attrName", value);
    
    您可能不想提醒这些值,浏览器可能会要求您停止允许页面上的提醒。。。但是如果你真的这么做了,那么你可以在那之后加入一个
    .each()

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

    简单地回答第二点,不,你不需要这样做。它帮助一些人跟踪它是jquery对象的事实
    var elements = $("ul:eq(0)").children();
    elements.attr("title", "Johnny");
    
    var elements = $("ul:eq(0)").children();
    elements.attr("title", "Johnny").each(function(){
         alert($(this).attr("title");
    });