检查DOM元素是否存在于
javascript中的最佳做法是什么?
在使用它之前,应该检查一个项目是否存在,像这样吗?
if ($("#" + machineId + packageId.removeSpecialChars().toUpperCase() + "").size() != 0) { var row = $("#" + machineId + packageId.removeSpecialChars().toUpperCase() + ""); }
这不会执行packageId.removeSpecialChars().toUpperCase()两次?
或者这会是更好的选择吗?
var row = $("#" + machineId + packageId.removeSpecialChars().toUpperCase() + ""); if (row) { // do something }
但是,当没有找到它会不会抛出异常?
解决方法
当您实际使用DOM元素时,是的,您应该检查它是否存在,然后再尝试使用它,以避免JavaScript错误.但是,您不使用DOM元素,您正在使用一个可能包含DOM元素的jQuery对象.
jQuery函数已经处理了在它的元素集中没有匹配的情况,所以你不需要在尝试使用它们之前明确地检查一下元素.如果您尝试使用.get()函数或[index]方括号符号直接引用该集合内的DOM元素,那么您只需要这样做.
除此之外,版本1.8中已不推荐使用.size()
jQuery函数,您应该直接使用jQuery对象的length属性来检查是否有元素,因此:
var $object = $('a-selector'); if($object.length) { // there's at least one matching element }