1

私が使用する場合はjqueryで$("#my_button").data('my-value', { onClick: function () { my_obj_function(); } });

そして別の機能で私はこれを行います

my-value.onClick.call()できます。

しかし、htmlでデータ属性を設定しようとすると機能しません。私はhtmlでこれをやった <a href='#' data-my-value='{"onClick":"function () { my_obj_function(); }"}'>Click me</a>

calling my-value.onClick.call()私が得ている 間にuncaught typeerror : object function() has no method call

私は何を間違っていますか?

4

2 に答える 2

3

.data()要素に html 属性を設定せに値を設定すると、jQuery はそれを独自のデータ構造に格納します。そのため.data()、関数やその他のオブジェクトを格納するために を使用できます。html5属性を取得するために使用.data() できますが、設定することはできません。data-

html属性がある場合、それは単なる文字列であるため、それをeval()取得するか、何らかの方法で解析してに渡す必要がありますnew Function()。これは行くべき道ではありません。

my-value.onClick.call()そうは言っても、実際にはmyマイナスと言っているので、どうすればうまくいくのかわかりませんvalue.onClick.call()。で値を設定したと仮定すると、次の.data()ように言うことができます$("#my_button").data('my-value').onClick.call()...

data-jQuery で属性を設定したい場合は、の.attr()代わりに メソッドを使用できますが、既に述べたように、これは文字列として設定されます。.data()$("#my_button").attr('data-my-value', ...)

于 2013-06-27T14:04:27.373 に答える
0

あなたのコード

<a href='#' data-my-value='{"onClick":"function () { my_obj_function(); }"}'>Click me</a>

オブジェクトではなく文字列として設定しています。

于 2013-06-27T14:04:42.483 に答える