JQuery - $(#)。remove()vs document.getelementbyid()。remove

时间:2014-05-12 15:00:53

标签: javascript jquery html

最初我有一个像这样的删除功能:

function ViewWorkflowDetail(btn, workflowId) {

      $("#workflowDetailPanel").remove();

      if (document.getElementById("workflowDetailPanel") == null) {
             // Do something usefull here
      }
}

哪个工作得非常出色。然而(本着尽可能多地使用JQuery的精神)我将其改为:

function ViewWorkflowDetail(btn, workflowId) {

      $("#workflowDetailPanel").remove();

      if ($("#workflowDetailPanel") == null) {
             // Do something usefull here
      }
}

但是现在$("#workflowDetailPanel")永远不会为空。如果我再次改回它(到document.getElementById),那么就没有问题了。为什么第二个选项继续找到那个div?JQuery对象是否以某种方式维护在某种缓存中?

注意:使用完全相同的设置/数据来测试这两种情况。

1 个答案:

答案 0 :(得分:7)

它永远不会为null,因为如果元素不存在,jQuery返回一个空数组,你必须检查数组的长度

  if ($("#workflowDetailPanel").length > 0) {
         // Do something usefull here
  }