jQueryeach只影响最后一个元素

标签 jquery each

我的每个语句只会影响最后一个元素。我想猜测它与我的变量逻辑有关,但我不明白这有什么意义,因为我使用 $(this) 定位该语句内

JS

$("form").each( function() {
    $this = $(this);
    $submit = $this.find('.submit');
    $textarea = $this.find('textarea');

    $submit.attr("disabled", "disabled");

    $textarea.keyup(function(){

        var validated = true;

        var validated = ($textarea.val().length === 0) ? false : true;

        if(validated) {
            $submit.removeAttr("disabled");
        } else {
            $submit.attr("disabled", "disabled");
        }
    });
    $textarea.trigger('keyup');
});

基本 HTML:

<form>
    <textarea rows="13"></textarea>
    <button class="btn submit">Chercher</button>
</form>
<form>
    <textarea rows="13"></textarea>
    <button class="btn submit">Chercher</button>
</form>

最佳答案

问题是您没有声明这些变量,因此它们不是函数的本地变量,仅使用一个单个变量,并且每次调用迭代器函数时都会覆盖该变量(并且如果你没有在任何地方声明它们,你就会成为 The Horror of Implicit Globals 的牺牲品)。在变量前面添加 var 以使它们特定于对迭代器函数的每次调用,例如:

$("form").each( function() {
    var $this = $(this);
    var $submit = $this.find('.submit');
    var $textarea = $this.find('textarea');
    // ...

关于jQueryeach只影响最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16400072/

相关文章:

javascript - AJAX 调用不起作用,正在寻找错误的操作?

javascript - 如何将新生成的 div 放在另一个 div 旁边?

javascript - 如何打开一个弹出文本框要求用户提交评论?

jquery - 为什么我不能在 $.each 函数中使用 `this` 作为 jQuery 函数的字符串参数

jquery - Modal JS 错误 - 对象不支持属性或方法 'modal'

javascript - 如何在javascript中清除间隔?

jQuery every - 将 (this) 与类规范相结合

java - 每个循环都遇到麻烦

javascript - 我是否错误地使用了 jQuery .each 函数?

javascript - jQuery:如何计算和显示列的总和(部分工作代码)