采用以下示例:
<div id="Demo" data-after-load="alert('Woof!')">Loading...</div>
您会注意到我已为data-
添加了自定义div
属性 - ID的目的是:
这是我到目前为止所做的:
var runLater = function () {};
if ($("#Demo").attr("data-after-load")) {
runLater = ?????;
}
runLater();
答案 0 :(得分:3)
if($("#Demo").data('afterLoad') !== undefined){
var runLater = $("#Demo").data('afterLoad');
}
eval(runLater);
虽然,通常有一种比使用eval
更好的方法。或许可以解释一下你使用它的原因,并且可能有更好的设计来满足你的要求。
答案 1 :(得分:1)
您可以eval()
属性...
var runLater = $("#Demo").attr("data-after-load");
if( runLater ) {
eval( runLater );
}
...但是如果可能的话,你应该将函数附加到.data()
元素。这样就可以避免使用eval。
$("#Demo").data("after-load", function() {
alert( 'Woof!' );
});
...
var runLater = $("#Demo").data("after-load");
if( runLater ) {
runLater();
}
...如果你绝对必须拥有HTML中的data属性,那么下一个最好的事情就是让它引用一个函数,如果可能的函数列表是已知的。
HTML:
<div id="Demo" data-after-load="woof">Loading...</div>
JS:
var runLater = $("#Demo").data("after-load");
var funcList = {
woof: function() {
alert( 'Woof!' );
},
foow: function() { ... }
};
if( runLater && funcList[ runLater ] ) {
funcList[ runLater ]();
}