【问题标题】:jQuery set each problemjQuery设置每个问题
【发布时间】:2011-09-05 23:35:55
【问题描述】:

我有一个 jQuery 函数中的 $.each 的问题,因为我有以下函数:

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+')');
    $.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>

【问题讨论】:

  • 确保将基数传递给parseInt
  • 啊,我解决了我的问题,$.each($("[name=area]"),function(){ var caller = $(this).attr('id'); vall = $("#"+caller).attr('max'); $("#"+caller).html('('+vall+')'); }); $.each 部分有一些 id 查找问题。
  • 这很可能是我见过的最丑陋的 javascript/jquery 代码。你可能想用 $(selector).each 替换 $.each,看看 this
  • 尼科,我是初学者。如果我知道有更好的解决方案,很可能我什至不会在这里发帖。似乎我的丑陋代码有效,因为我验证了 -Link 和 Dennis 的每个部分,但没有一个有效,但我丑陋的评论完成了这项工作。

标签: jquery function each


【解决方案1】:

尝试改用常规的@987654321@。 $.fn.each 设计用于迭代 jQuery 对象,而 $.each 迭代常规对象/数组。

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

【讨论】:

    【解决方案2】:
    1. $.each() 的语法不正确:

      .each( function(index, Element) ) 返回:jQuery

    2. 变量调用者没有正确引用 jQuery 对象,您应该在以下任一位置的 ID 前添加“#”:

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

     $("#" + 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+')');
            });
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 2012-06-23
      • 2011-11-19
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多