【问题标题】:What's the difference between $(this) and $("#id")?$(this) 和 $("#id") 有什么区别?
【发布时间】:2012-10-06 01:20:15
【问题描述】:

$.each() 循环中,有一个特定情况我不明白为什么会失败。

当我做一个这样的 if 语句时(我的具体例子,只有没有真正的属性名称)

if(($(this).attr("some-attribute")))

无论属性是否存在,它总是返回 false。

但是如果我先得到这个元素的id,然后检查没有“this”关键字的属性,它就可以了。

var id = $(this).attr("id");
if(($("#"+id).attr("some-attribute")))

这工作正常,它确实返回正确的值。

【问题讨论】:

  • 您能否提供一些有关何时/如何重现此问题的背景信息,例如在jsfiddle.net 中?
  • 我并不是要学究气,它可能是填充文本,但是如果您的属性中有空格,那不是有效的属性。您可以发布实际代码,还是编辑this fiddle

标签: jquery selector this each


【解决方案1】:

$(this) 不查询 DOM,它只是用 jQuery 对象包装了 javascript DOM 元素。

$('#id') 查询 DOM。

我建议你阅读my answer here

【讨论】:

  • 尽管这回答了问题标题,但实际问题似乎有点不同。
  • @FabrícioMatté。缺少真正的代码,他可能有拼写错误,因为他描述的场景在我看来是不可能
  • @gdoron 这正是我的意思。 =]
  • 好吧,我不知道该告诉你们什么。我无法再重现这个问题,它现在似乎双向工作。也许确实是一个错字或只是与我没有注意到的其他代码部分的冲突......抱歉浪费大家的时间
猜你喜欢
  • 2010-11-06
  • 2011-04-12
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 2013-05-26
相关资源
最近更新 更多