我想在 jquery 对象中添加属性。我正在尝试在 jquery 的上下文中添加属性。我控制 jquery 对象 console.log($(this)),它看起来像一个对象。但是当我试图修改代码时不起作用
$('ul').click(function(){
$(this).myul={'date':'28 april'}
console.log($(this))
})
我想在 jquery 对象中添加属性。我正在尝试在 jquery 的上下文中添加属性。我控制 jquery 对象 console.log($(this)),它看起来像一个对象。但是当我试图修改代码时不起作用
$('ul').click(function(){
$(this).myul={'date':'28 april'}
console.log($(this))
})
您可以在 HTML 中的 data- 属性中添加数据,因此可以选择存储:
$(this).data('myul', {'date':'28 april'});
更新的 jsfiddle 在这里:http: //jsfiddle.net/8juvcxqg/
问题是当您每次创建新的 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()
})
演示:小提琴