代码之家  ›  专栏  ›  技术社区  ›  Orson

什么时候应该用$()包装DOM对象?

  •  17
  • Orson  · 技术社区  · 16 年前

    有时候,我能做到 variable.val() 它是有效的。有时,我被要求使用 $(variable).val()

    有人知道什么时候用包装纸包装一个物体吗 $() 在使用JQuery时?

    6 回复  |  直到 16 年前
        1
  •  16
  •   kgiannakakis    16 年前

    使用$()包装DOM对象将其转换为jQuery包装的集合元素。这样,您应该能够使用它调用jQuery方法(val()、attr()、show()、hide()、serialize()。

    但是,如果需要获取或设置纯javascript属性,则不应将其包装。

        2
  •  6
  •   fyjham    16 年前

    简而言之 $(variable) 获取一个DOM元素并创建一个jQuery对象。任何时候,当您使用DOM对象而不是jQuery对象时,都需要使用它。

    获得DOM对象的最可能原因是:

    1. 事件-在jQuery中绑定(如单击)的任何事件中 this
    2. 非jQuery javascript—如果您的部分代码仍在使用 document.getElementById (比如,如果您有一些遗留javascript,或者由于某种原因引用的第三方库不是jQuery插件),那么这些将是DOM对象,需要进行包装。

    然而,打电话也没有害处 $(可变) 如果 variable $(variable)[0]

        3
  •  5
  •   BalusC    16 年前

    有人知道什么时候用包装纸包装一个物体吗 $() 在使用JQuery时?

    obj instanceof jQuery 返回false。这种情况经常发生在 this 和方法参数(除非该方法被记录为参数必须是jQuery对象)。

    所以如果你有 如果您想拥有jQuery函数,那么就需要对其进行包装。例如。

    function() {
       $this = $(this);
       $this.val();
    }
    

    function(e) {
        e = $(e);
        e.val();
    }
    

    重新包装jQuery元素并没有什么坏处。

        4
  •  0
  •   Rygu    16 年前

    在学习jQuery的开始阶段,常常需要反复尝试才能确定变量是否已经包装好。例如,在事件函数中,this变量不是jQuery对象。另外,我相信重新包装jQuery对象一点也不危险。

    我不认为这是您需要担心的事情,因为随着您将来编写更多jQuery代码,您很快就会知道何时包装,何时不包装。

        5
  •  0
  •   James Black    16 年前

    elem 下面没有包装,但你可以这样做 elem.value

    $('#someid').bind('click', function(e) {
      var elem = e.currentTarget;
    }
    

    如果没有使用选择器获取元素,则可能需要将其包装。

    如果您真的需要,您可以使用一个实用程序函数返回一个包装的元素,因此它总是被包装的。

        6
  •  0
  •   Joel L    16 年前

    经常使用没有害处 $(something) something )