.each()函数不会遍历我的对象

时间:2015-06-11 10:01:48

标签: javascript jquery

我有以下jquery函数,似乎.each函数从不遍历我的对象(它直接到" $(" #AppConnect")。val(appConnectString); "没有迭代的行。)

以下是代码:

$("input").focusin(function () {
    if (!$(this).hasClass("appConnectData")) {
        var key, value, appConnectString = "";
        $(".appConnectData").each(function (index, element) {
            if ($(element).hasClass("key")) {
                key = $(element).val();
            } else {
                value = $(element).val();
            }
            if (!key && !value) {
                appConnectString += key + "." + value + ";";
            }
        });

        $("#AppConnect").val(appConnectString);
    }
    //alert($("#AppConnect").val());
});

到目前为止,我一直在找到问题但没有成功:

  • 检查$(" .appConnectData")是否为空
  • 检查.each语法(你永远不会知道:p)
  • 插入断点以查看是否有错误
  • 将$(" .appConnectData")的内容放入var中,然后遍历所述var

也许是因为我的.each是一个焦点函数,或者我做了别的错误,但我似乎无法找到它。

我事先感谢你们所提供的帮助:)

2 个答案:

答案 0 :(得分:0)

我认为问题是if条件,如果您想确认key && value&成功,请检查key value有一个值。

if (key && value) {
    appConnectString += key + "." + value + ";";
}

演示:Fiddle

答案 1 :(得分:0)

在每种情况下,如果存在key,则value将不存在,反之亦然。所以正确的逻辑运算符是or。即使这还不够!

您可以将if分开来测试密钥和值的存在:

  $("input").focusin(function () {
if (!$(this).hasClass("appConnectData")) {
    var key, value, appConnectString = "";
    $(".appConnectData").each(function (index, element) {
        if ($(element).hasClass("key")) {
            key = $(element).val();
        } else {
            value = $(element).val();
        }
        if (key) {
            appConnectString += key".";
        }
        if(value){
           appConnectString +=value;
        }
        if(key||value){              
           appConnectString +=";";
        }
    });

    $("#AppConnect").val(appConnectString);
  }
  //alert($("#AppConnect").val());
});