ahs*_*ele 36 jquery dom jquery-selectors
我可能误解了正在发生的事情,但是我可以告诉我在使用时获取DOM元素而不是jQuery对象.each().
以下内容不适this用于DOM元素而不是jQuery对象
$("span[id$='_TotalItemCost']").each(function() {
    var someText = this.text();
});
修改为转换this为jQuery对象,一切都很好
$("span[id$='_TotalItemCost']").each(function() {
    var someText = $(this).text();
});
我的选择器有什么时髦吗?是jQuery的.each()文档错误的,它不是一个jQuery对象,而是一个DOM元素被退回.each()?
Vin*_*ert 40
该文档没有错,但您可能会误解jQuery对象是什么.
$()函数返回jQuery对象.所以$("span[id$='_TotalItemCost']")是一个jQuery对象,它包含所选的每个span元素.
使用.each()将遍历jQuery对象中包含的元素.这就是为什么这是一个DOM节点而不是一个jQuery对象.
通过$(this)在此特定元素上使用jQuery方法,您做了正确的事情.
@Vincent Robert,您几乎完美地总结了这一点,但让我稍微扩展一下。
尽管JQuery是具有原型的函数,但其原型扩展了其根实例,但其行为更像是一个对象。
如果您将对象与方法/函数分开并单独查看它们,那么您将了解jQuery接口的构建方式。
si被$()视为对象,并被each()视为方法。您使用jQuery $()“选择器” 初始化对象时,女巫又返回仅包含从选择器中选择的要素/数据的对象$()。
然后,它具有可以直接在所选内容上运行的方法/函数,但是方法不应返回jquery对象,因为在大多数情况下,它们不返回节点而是仅返回字符串或布尔值,因此将它们包装在jQuery对象中将毫无意义。 。
因为您的OP基于每个函数,所以您不打算在那里接收jquery对象,因为每个对象都不是专门为节点和元素设计的
例如,您要在此处使用jquery对象吗?
$({a:'1',b:'2'}).each(function(){
});
这将是不好的,毫无意义的,这就是为什么方法不应该/不应该返回对象的原因,除非该方法的意思是返回单例或专门为对象返回而设计。
另外,当我说对象时,我不是在谈论json对象,而是方法/原型对象。
希望这会有所帮助。
| 归档时间: | 
 | 
| 查看次数: | 15333 次 | 
| 最近记录: |