jQuery 设置每个问题

发布于 2024-12-03 05:26:23 字数 793 浏览 0 评论 0原文

我在 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。 链接如下:

(5812)

i have a problem with an $.each in a jQuery function, as I have the following function:

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

}

But the each part doesnt work, as the .html() parts from the link remain 0.
The links are like this:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦魇绽荼蘼 2024-12-10 05:26:23

尝试使用常规 each 代替。 $.fn.each 设计用于迭代 jQuery 对象,而 $.each 迭代常规对象/数组。

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

Try using the regular each instead. $.fn.each is designed for iterating over jQuery objects whereas $.each iterates over regular objects/arrays.

$("[name=area]").each(function(){
    var caller = $(this).attr('id');
    vall = $("#"+caller+"_area").attr('max');
    $(caller).html('('+vall+')');
});
情绪 2024-12-10 05:26:23
  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+')');
        });

    }
}
  1. The syntax of $.each() is incorrect:

    .each( function(index, Element) ) Returns: jQuery

  2. The variable caller isn't referencing the jQuery object correctly, you should add the "#" before the ID in either of the locations below:

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

OR

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

Your code should become:

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

    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文