【问题标题】:Apply jquery plugin to dom element将 jquery 插件应用于 dom 元素
【发布时间】:2012-01-05 13:21:26
【问题描述】:

我将处理应用程序前端部分的所有 javascript 代码存储在 frontend.js 中。 如果此页面上不存在 dom 元素但我尝试应用插件 javascript throw 错误 示例:

$('#normalImage').Jcrop({
    setSelect:[ 0, 0, 48, 48 ],
    sideHandles:false,
    onChange:showPreview,
    onSelect:showPreview,
    aspectRatio:1
});

我找到了一个解决这个问题的方法,那就是检查尺寸

if($('#normalImage').size() > 0)
//apply plugin

但我不确定什么是正确的方法

【问题讨论】:

  • 你的意思是doesn't exist吗?您可以将代码包装在 $(docuemnt).ready()

标签: javascript jquery plugins jquery-plugins


【解决方案1】:

您可能正在处理一个糟糕的插件,因为当 jquery 选择器为空时不抛出错误是插件的工作。但在这种情况下,检查大小或长度才是正确的工作方式。

最好用这个:

var dom = $('#normalImage');
if(dom.length > 0) 
{
   dom.Jcrop({
      setSelect:[ 0, 0, 48, 48 ],
      sideHandles:false,
      onChange:showPreview,
      onSelect:showPreview,
      aspectRatio:1
   });
}

【讨论】:

    【解决方案2】:

    检查 .length 并将其与零相比较以检查集合是否有任何元素是正确的方法吗?

    来自 jquery 网站:

    .size() 方法在功能上等同于 .length 属性; 但是,首选 .length 属性,因为它没有 函数调用的开销。

    【讨论】:

      【解决方案3】:
      if ($("#myelement").length > 0){
        // do something here
      }
      

      【讨论】:

      • if ($("#myelement").length) 就足够了,即使您的解决方案可能更容易理解:)
      【解决方案4】:

      如果你想检查一个 dom 元素是否存在,你可以使用:

      if ( $("#normalImage").length > 0 ) {
        //do something
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多