Javascript 字符串到jQuery函数 概述

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()']

我试图找到与选择属性值匹配的jQuery函数,并在选择上运行该函数

例子。 问题1 我不知道如何从字符串创建jQuery函数调用

我知道我可以像这样调用函数,$(这个)'onclick';然而,在尝试调用它之前,我无法检查它是否存在

通常我可以这样做: var strfun='onclick'; var fn=主体[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");
    });
};


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']));