概述
我试图找到与选择属性值匹配的 jQuery 函数并在选择上运行该函数。
例子。
$('[data-store="' + key + '"]').each(function() {
var $callback = $(this).attr('data-filter');
if($callback != null) {
var fn = window['$.fn.nl2br()'];
if(jQuery.isFunction(fn)) {
$(this).fn();
}
}
$(this).setValue(value);
});
问题 1
我不确定如何从字符串创建 jQuery 函数调用。
我知道我可以像这样调用函数 $(this)'onclick'; 但是我无法在尝试调用它之前检查它是否存在。
通常我可以这样做: var strfun = 'onclick'; var fn = body[strfun];
if(typeof fn === 'function') {
fn();
}
这似乎失败了:
var fn = window['$.fn.nl2br()'];
if(jQuery.isFunction(fn)) {
$(this).fn();
}
编辑:
我似乎在这方面取得了成功:
if($callback != null) {
var fn = $(this)[$callback]();
if( typeof fn === 'function') {
$(this)[$callback]();
}
}
问题 2
使用 jQuery.isFunction() 如何检查方法是否存在?你能用 jQuery.isFunction() 做到这一点吗?
例子
声明函数:
$.fn.nl2br = function() {
return this.each(function() {
$(this).val().replace(/(<br>)|(<br \/>)|(<p>)|(<\/p>)/g, "\r\n");
});
};
测试函数是否存在,这些选项失败:
jQuery.isFunction($.fn.nl2br); // = false
jQuery.isFunction($.fn['nl2br']()); //false