jQuery在jsFiddle上工作不适用于wesite

我有一个在jsFiddle中运行的jQuery脚本,但在实际的网站上不起作用,我想不出更多的事情要做。

这是小提琴

这是网站

我需要一个复选框,点击后将依次检查其他一些复选框。

$("form input[id='selectall']").click(function () { var inputs = $("form input[class='produse4export']"); for (var i = 0; i < inputs.length; i++) { if (this.checked) { inputs[i].checked = true; checkme(); } else { inputs[i].checked = false; uncheckme(); } } }); 

选中这些复选框(一次性完成)后,必须启用其他复选框。 如果取消选中它们,则必须再次禁用和取消选中其余复选框(如果已选中)。

有点难以解释,但小提琴和网页都很容易阅读。 为什么它没有按预期工作?

在小提琴中,您将在页面加载时绑定事件。 在您的页面上,您正在尝试在解析页面本身时执行此操作。

在您的页面上,将事件处理程序绑定代码更改为:

 $(document).ready(function() { $("form input[id='selectall']").click(function () { ... }); }); 

您需要将script块移动到它所作用的元素下方

它在jsFiddle上工作的原因是jsFiddle有一个真正的脑死亡 令人惊讶的默认行为,即将所有脚本放在一个从window#load #load事件中调用的函数中。 (您可以在左侧看到它,它是从顶部开始的第二个选择框。)因此,在jsFiddle上,直到解析完所有HTML并且元素存在之后,您的脚本代码才会运行。 但是在你的网站上,你把代码放在它所作用的元素之上,所以当你试图去获取它们时,它们还不存在。

放置东西的咒语是:“样式,内容,脚本。” 在所有内容之后,将样式表(内联和链接)放在文档的顶部,显示正文中的内容(显然),以及底部的脚本。 这样,当脚本运行时,元素就存在于DOM中。

也可以看看:

  • YUI加速网站的最佳实践
  • Google Closure Library负责研究DOM元素何时可以编写脚本