2012-01-05 78 views
1

我存储所有在frontend.js中处理应用程序前端部分的JavaScript代码。 如果DOM元素不存在这个页面上,但我尝试应用插件的JavaScript抛出错误 样品:将jquery插件应用到dom元素

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

我发现这个问题,我们检查的大小

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

一个解决方案,但我不确定什么是正确的方式

+1

你的意思是'不exist' **尚未**?你可以将你的代码封装在'$(docuemnt).ready()' – JMax 2012-01-05 13:23:10

回答

4

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

最佳使用这样的:

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

这是正确的方式来检查。长度和comapring它与零来检查集合是否有任何元素?

从jquery的网站:

的.size()方法是功能等效。长度属性;但是,.length属性是首选的,因为它不具有函数调用的开销 。

+0

中查看这个例子在jquery站点http://api.jquery.com/length/ – 2012-01-05 13:25:51

0
if ($("#myelement").length > 0){ 
    // do something here 
} 
+0

'if($(“#myelement”)。length)即使您的解决方案可能更易于理解,也足够了:) – Stefan 2012-01-05 13:30:17

0

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

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