【问题标题】:jQuery plugin if object existsjQuery插件如果对象存在
【发布时间】:2012-09-06 16:31:16
【问题描述】:

我在我的脚本中使用它:

$.fn.dataTableExt.oSort['title-numeric-asc']  = function(a,b) {
    var x = a.match(/title="*(-?[0-9\.]+)/)[1];
    var y = b.match(/title="*(-?[0-9\.]+)/)[1];
    x = parseFloat( x );
    y = parseFloat( y );
    return ((x < y) ? -1 : ((x > y) ?  1 : 0));
};

datatableExt 来自这个:
http://datatables.net/download/build/jquery.dataTables.js

有时我包含“jquery.dataTables.js”,有时我不包含。
所以如果包含数据表代码,我想添加这个插件。
怎么查?
是不是类似于(typeof fn.dataTableExt != 'undefined')

【问题讨论】:

    标签: jquery jquery-plugins jquery-datatables


    【解决方案1】:

    我觉得很简单

    if (!$.fn.dataTableExt) {
        alert('does not exist');
    } else {
        alert('does exist');
    }
    

    【讨论】:

    • 没错。在这种情况下,typeof 检查是不必要的,因为我们检查的是对象的属性,而不是变量是否存在。 (只是为了澄清为什么会这样)
    • @ElliotBonneville,对,我们只关心 dataTableExt 的存在,我们不关心类型或值,只关心它的存在。
    【解决方案2】:

    与查看 JQuery 的 Google 存储库是否已加载的方法相同:

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
    <script type="text/javascript">!window.jQuery && document.write('<script src="js/jquery-1.7.1.min.js"><\/script>')</script>
    

    但它会是:

    <script type="text/javascript">if (!$.fn.dataTableExt) { document.write('<script src="http://datatables.net/download/build/jquery.dataTables.js"><\/script>')}</script>
    

    【讨论】:

    • 你不是说if (!$.fn.dataTableExt)...吗?
    • 没有,他说如果有这个功能,他要加插件。如果那个函数不存在,那么他不需要附加的js文件
    • 我可能误解了这个问题。我虽然他在特定页面上寻找一个函数来决定是否添加库插件 - 固定顶部:-)
    • 我把它读为脚本中存在的dataTableExt方法,所以如果它没有加载,他想加载它......?
    • 感谢 opanitch 的关注。 CaffGeek 的解决方案正是我所需要的 :)
    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2012-06-14
    • 2014-07-03
    • 2023-03-25
    相关资源
    最近更新 更多