Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数据函数与在html中设置数据值_Javascript_Jquery_Function_Jquery Data - Fatal编程技术网

Javascript 数据函数与在html中设置数据值

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属性,

在jquery中,如果我使用
$(“#我的#按钮”).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
,但这很危险