jQuery在jsFiddle上工作不适用于网站

时间:2013-05-19 10:22:33

标签: jquery

我有一个在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();
        }
    }
});

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

另见:

答案 1 :(得分:1)

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

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

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