0

我想在 jquery 对象中添加属性。我正在尝试在 jquery 的上下文中添加属性。我控制 jquery 对象 console.log($(this)),它看起来像一个对象。但是当我试图修改代码时不起作用

$('ul').click(function(){
    $(this).myul={'date':'28 april'}
    console.log($(this))
})

在此处输入图像描述

4

3 回答 3

2

您可以在 HTML 中的 data- 属性中添加数据,因此可以选择存储:

$(this).data('myul', {'date':'28 april'});

更新的 jsfiddle 在这里:http: //jsfiddle.net/8juvcxqg/

于 2015-04-28T09:08:19.157 回答
1

问题是当您每次创建新的 jQuery 包装器时调用 $(this) 时,您添加到前一个对象的每个内容在新对象中都将不可用。

您可以使用$(this) == $(this)which will return对其进行测试false

正确的方法是使用数据 api

$('ul').click(function () {
    console.log('test', $(this) == $(this));//will be false since both the times different objects are returned

    console.group('Using cached object')
    var $this = $(this);//here we use a cached instance of the jQuery wrapper, this will work as long as you have a reference to $this - but is the wrong way
    $this.myul = {
        'date': '28 april'
    }
    console.log($this.myul);
    console.groupEnd()

    console.group('Using data api')
    $(this).data('myul', {
        'date': '28 april'
    });
    console.log($(this).data('myul'))
    console.groupEnd()
})

演示:小提琴

于 2015-04-28T09:10:55.957 回答
0

你甚至不需要 jquery:

 this['myul'] = '"date":"28 april"';
 console.log($(this))

工作演示

于 2015-04-28T09:08:58.137 回答