Javascript 数据函数与在html中设置数据值
在jquery中,如果我使用Javascript 数据函数与在html中设置数据值,javascript,jquery,function,jquery-data,Javascript,Jquery,Function,Jquery Data,在jquery中,如果我使用$(“#我的#按钮”).data('my-value',{onClick:function(){my#u obj_function();}) 在另一个函数中,我这样做 my value.onClick.call() 但是,如果我试图在html中设置数据属性,它将不起作用。 我是用html做的 调用我的value.onClick.call()时 未捕获类型错误:对象函数()没有方法调用 我做错了什么?当您使用.data()设置一个值时,它没有在元素上设置html属性,
$(“#我的#按钮”).data('my-value',{onClick:function(){my#u obj_function();})代码>
在另一个函数中,我这样做
my value.onClick.call()
但是,如果我试图在html中设置数据属性,它将不起作用。
我是用html做的
调用我的value.onClick.call()时
未捕获类型错误:对象函数()没有方法调用
我做错了什么?当您使用.data()
设置一个值时,它没有在元素上设置html属性,jQuery将它存储在自己的数据结构中。这就是为什么可以使用.data()
来存储函数和其他对象.data()
可用于检索html5数据-
属性,但不能设置它们
当您有一个html属性时,它只是一个字符串,所以您需要eval()
它或以某种方式解析它并传递给new Function()
。这不是我们要走的路
话虽如此,我不明白my value.onClick.call()
怎么可能起作用,因为它实际上是在说my
减去value.onClick.call()
。假设您使用.data()
设置了值,您可以说$(“#my_按钮”).data('my-value')。onClick.call()
如果要使用jQuery设置数据-
属性,可以使用.attr()
方法,而不是.data()
,使用$(“#my_按钮”).attr('data-my-value',…)
,但如前所述,这会将其设置为字符串。您的代码
<a href='#' data-my-value='{"onClick":"function () { my_obj_function(); }"}'>Click me</a>
正在将其设置为字符串而不是对象。根据HTML5自定义属性规范,
相当于$(…).data('myValue')
@Phylogenesis-不完全一样。.data()
方法可以检索html5数据-
属性,但不能设置它们<代码>数据-
属性是字符串,但是.data()
可以存储包括对象在内的其他类型。@nnnnnn-True。我知道jQuery使用$.cache
来处理数据()
,但我认为值得一提的是,数据键和Rifky使用的属性之间存在轻微的断开。@Phylogenesis-啊。对,对不起。(我自己的断开连接。)这意味着我不能在HTML中设置数据域中的对象:-(有没有其他方法可以将函数或对象设置为HTML中的数据值?您可以执行eval
,但这很危险