Javascript 字符串到jQuery函数 概述
我试图找到与选择属性值匹配的jQuery函数,并在选择上运行该函数 例子。 问题1 我不知道如何从字符串创建jQuery函数调用 我知道我可以像这样调用函数,$(这个)'onclick';然而,在尝试调用它之前,我无法检查它是否存在 通常我可以这样做: var strfun='onclick'; var fn=主体[strfun]Javascript 字符串到jQuery函数 概述,javascript,jquery,Javascript,Jquery,我试图找到与选择属性值匹配的jQuery函数,并在选择上运行该函数 例子。 问题1 我不知道如何从字符串创建jQuery函数调用 我知道我可以像这样调用函数,$(这个)'onclick';然而,在尝试调用它之前,我无法检查它是否存在 通常我可以这样做: var strfun='onclick'; var fn=主体[strfun] if(typeof fn === 'function') { fn(); } 这似乎失败了: var fn = window['$.fn.nl2br()']
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");
});
};
及
JavaScript中的函数通过其名称引用,就像其他变量一样。如果定义
var window.foobar=function(){…}
您应该能够通过window.foobar
和window['foobar']
引用函数。通过添加()
,您正在执行函数
在第二个示例中,您应该能够通过$.fn['nl2br']
引用函数:
$.fn.nl2br = function() {
return this.each(function() {
$(this).val().replace(/(<br>)|(<br \/>)|(<p>)|(<\/p>)/g, "\r\n");
});
};
console.log(jQuery.isFunction($.fn['nl2br']));
$.fn.nl2br=函数(){
返回此值。每个(函数(){
$(this.val().replace(/(
)|(
)|()|()/g,“\r\n”);
});
};
log(jQuery.isFunction($.fn['nl2br']);
查看一个工作示例-我知道typeof有时会在IE下返回有趣的结果,但我认为它对jQuery函数很好。Hanks,我在发布后回答了我自己的问题。这真有趣。你的回答使我的理解更清楚了。
jQuery.isFunction($.fn.nl2br); // = false
jQuery.isFunction($.fn['nl2br']()); //false
var fn = window['$.fn.nl2br']();
jQuery.isFunction($.fn['nl2br']);
$.fn.nl2br = function() {
return this.each(function() {
$(this).val().replace(/(<br>)|(<br \/>)|(<p>)|(<\/p>)/g, "\r\n");
});
};
console.log(jQuery.isFunction($.fn['nl2br']));