【问题标题】:Weird jquery behaviour奇怪的jQuery行为
【发布时间】:2010-06-02 02:33:26
【问题描述】:

我正在尝试实现一些非常基本的东西,但 jquery 并没有达到我的预期!我有一个 id 为“stuff”的 div。在 css 中,我将 display 属性设置为“none”,目的是用 jquery 更改它。这样,除非用户启用了 js,否则 div 将被隐藏。我的 jquery 代码很简单

$("#stuff").show();

不幸的是,这不起作用,div 仍然隐藏。

更新:它现在似乎在 Chrome 和 IE8 中间歇性地工作。还没有在ff里。

【问题讨论】:

  • 你把它包裹在ready处理程序中了吗?
  • 你能发布所有相关代码吗?
  • 为我工作; jsfiddle.net/unTWA
  • @Matt - 一切都与上下文有关 :) 尝试不使用 document.ready jsfiddle 默认添加:jsfiddle.net/unTWA/1
  • 哇,不知道 jsfiddle...不错 :)

标签: jquery css firefox


【解决方案1】:

确保您的代码在 DOM 准备就绪时运行,如下所示:

$(function() {
  $("#stuff").show();
});

$(function() {}) is short for $(document).ready(function() { });,这会在 DOM 准备就绪时运行代码,例如您的 div 实际上可以找到。否则,您的选择器(除非这是在您的 <body> 的末尾)可能找不到任何东西。您可以通过将 alert($("#stuff").length); 放在您的代码现在的位置来查看这一点,如果它提醒 0,这很可能是问题所在。

【讨论】:

  • 这很可能是问题所在,您在将实际 html 内容解析为 DOM 之前运行您的函数,因此它不存在。通过在 DOM 完全加载时运行该函数,您的 div 很可能会在范围内。
  • 查看上面的评论...此外,虽然我没有尝试过警报,但当我在 firebug 中检查 HTML 时,它确实会按预期显示为具有原始 CSS 规则的 DOM 的一部分。
  • @musoNic80 - 警报显示什么?忽略我们提供的调试提示,只提供没有标记的一行代码并不是找到问题的最佳方法...
  • 对不起尼克,我不得不离开我的电脑一段时间,这就是我没有尝试警报提示的原因。我不会忽视建议。有空我会试试的。除了这一行之外,我有一个按预期工作的长 jquery 文件。这是唯一试图针对 thar div 的行,所以我认为一切都无关紧要。
  • 好的,所以警报测试结果为“1”。我也尝试过扭转局面。我删除了 CSS 中的“display:none”属性,并将 show() 替换为 hide()。按预期工作。还有其他想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 2018-07-11
  • 2014-12-25
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多