我有一个在jsFiddle中运行的jQuery脚本,但在实际的网站上不起作用,我想不出更多的事情。
以下是fiddle
这是website
我需要一个复选框,点击后会依次检查其他一些复选框。
$("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();
}
}
});
选中这些复选框(一次性完成)后,他们必须启用其他复选框。如果取消选中它们,则必须再次禁用并取消选中其余复选框(如果已选中)。
有点难以解释,但小提琴和网页都很容易阅读。为什么它没有按预期工作?
答案 0 :(得分:3)
您需要将script
块移动到下面它所作用的元素。
它在jsFiddle上工作的原因是jsFiddle有一个真正的脑死亡 令人惊讶的默认行为,这是将所有脚本放在一个从{调用的函数中{1}}事件。 (您可以在左侧看到这一点,它是从顶部开始的第二个选择框。)因此,在jsFiddle上,直到解析完所有HTML并且元素存在之后,您的脚本代码才会运行。但是在您的网站上,您将代码置于之上,因此当您尝试获取它们时,它们还不存在。
放置东西的口号是:“样式,内容,脚本。”在所有内容之后,将样式表(内联和链接)放在文档的顶部,显示正文中的内容(显然),以及底部的脚本。这样,当脚本运行时,元素就存在于DOM中。
另见:
答案 1 :(得分:1)
在小提琴中,您将在页面加载时绑定事件。在您的页面上,您正在尝试解析页面本身。
在您的页面上,将事件处理程序绑定代码更改为:
$(document).ready(function() {
$("form input[id='selectall']").click(function () {
...
});
});