jQuery每个只影响最后一个元素

vek*_*sen 2 each jquery

我的每个语句只会影响最后一个元素.我想猜测它与我的变量逻辑有关,但我不知道这有多大意义,因为我使用$(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');
});
Run Code Online (Sandbox Code Playgroud)

基本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>
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 11

问题是你没有声明那些变量,所以它们不是函数的本地变量,只使用了一个变量,并且每次调用迭代器函数都会被覆盖(如果你没有在任何地方声明它们,那么你" 沦为隐形全球恐怖"的牺牲品.var在变量前添加,使它们特定于每次调用迭代器函数,例如:

$("form").each( function() {
    var $this = $(this);
    var $submit = $this.find('.submit');
    var $textarea = $this.find('textarea');
    // ...
Run Code Online (Sandbox Code Playgroud)