JQuery поставил каждую проблему - PullRequest
0 голосов
/ 06 сентября 2011

У меня проблема с $ .each в функции jQuery, так как у меня есть следующая функция:

function set_max(unit) {</p> <pre><code>var max = parseInt($("#"+unit+"_area").html().replace('(','').replace(')','')); if (max > 0) { $("[name="+unit+"]").val(max); $("[name=area]").html('(0)'); } else { var val = $("#"+unit+"_area").attr('max'); $("[name="+unit+"]").val(''); $("#"+unit+"_area").html('('+val+')'); $.each($("[name=area]"),function(){ var caller = $(this).attr('id'); vall = $("#"+caller+"_area").attr('max'); $(caller).html('('+vall+')'); }); }

}

Нокаждая часть не работает, так как части .html () из ссылки остаются равными 0. Ссылки выглядят следующим образом:

<a id="spear_area" name="area" max="5812" href="javascript:set_max('spear');">(5812)</a>

Ответы [ 2 ]

0 голосов
/ 06 сентября 2011
  1. Синтаксис $ .each () неверен:

    .each (функция (индекс, элемент)) Возвращает: jQuery

  2. Вызывающая переменная неправильно ссылается на объект jQuery, вы должны добавить «#» перед идентификатором в любом из следующих мест:

    var caller = "#" + $ (this) .attr ('id');

OR

 $("#" + caller).html('('+vall+')');

Ваш код должен стать:

function set_max(unit) {
    var max = parseInt($("#"+unit+"_area").html().replace('(','').replace(')',''));

    if (max > 0) {

        $("[name="+unit+"]").val(max);
        $("[name=area]").html('(0)');

    } else {    

        var val = $("#"+unit+"_area").attr('max');
        $("[name="+unit+"]").val('');
        $("#"+unit+"_area").html('('+val+')');

        $("a[name=area]").each(function() {
            var caller = "#" + $(this).attr('id');
            vall = $("#"+caller+"_area").attr('max');
            $(caller).html('('+vall+')');
        });

    }
}
0 голосов
/ 06 сентября 2011

Попробуйте использовать обычный <a href="http://api.jquery.com/each/" rel="nofollow">each</a>. $ .fn.each предназначен для итерации по объектам jQuery, тогда как $ .each итерирует по обычным объектам / массивам.

$("[name=area]").each(function(){
    var caller = $(this).attr('id');
    vall = $("#"+caller+"_area").attr('max');
    $(caller).html('('+vall+')');
});
...