jQuery:在普通的Javascript中"禁止"做什么

fly*_*ire 8 html javascript jquery

一个jQuery最佳实践问题.

我正在编写一个非常jQuery密集的网页.我是jQuery的新手,并注意到它的强大功能,但是当我带来了大量的javascript经验和知识时,我的问题是:在jQuery中应该做些什么以及在普通的javascript中做什么.

例如,有一些回调将普通的DOM对象作为参数发送.我应该使用它还是应该包装它(如$(this)).

如果我这样做是重要的.x = y或$(this).attr("x",y).

Tom*_*tel 4

如果您的函数接收 DOM 对象并且您不需要该 DOM 对象的任何 jQuery 功能,则无需将其转换为 jQuery 对象。例如,如果您收到一个复选框对象,您可以检查该checked属性,而无需使用任何 jQuery。

但是,如果您需要导航到该复选框中的其他元素,则可能值得对其进行转换:

function yourCallback(cb) {
    cb = $(cb);
    var sel = $(cb).closest('td').next().find('select');
    // For example, update the options in a neighboring select field
    ...
}
Run Code Online (Sandbox Code Playgroud)

jQuery(和其他库一样)与原生 JS 顺利融合。如果您需要额外的功能,请增强相关对象。

至于你的最后一个问题:你可能会发现该data函数对于避免非标准 DOM 属性很有用。如果你的x问题中的属性实际上是一个有效的 DOM 属性,你可以写 或this.x = y$(this).attr('x', y)IMO 这并不重要。但是,如果x不是 DOM 属性,请使用

$(this).data('key', value)
Run Code Online (Sandbox Code Playgroud)

这样,您就可以使用 DOM 元素存储任意键值对,其中value可以是任意原始值或对象。