Javascript jQuery选择所有字段而不是某些字段

Javascript jQuery选择所有字段而不是某些字段,javascript,jquery,forms,Javascript,Jquery,Forms,上次搜索的存储方式: <div class="lastSearch" style="display:none"> <input type="hidden" data-field-no="193" data-value="asd"> <input type="hidden" data-item-type="1" data-item-no="12"> </div> 变量oldFieldNo和oldValue已成功加载,并且第一个每个循

上次搜索的存储方式:

<div class="lastSearch" style="display:none">
    <input type="hidden" data-field-no="193" data-value="asd">
    <input type="hidden" data-item-type="1" data-item-no="12">
</div>
变量
oldFieldNo
oldValue
已成功加载,并且第一个
每个
循环工作正常

在这个函数之后,我得到的结果是表单中的所有输入和选择字段都用存在的最后一个
.lastSearch输入
字段填充。同样,循环
.lastSearch input
的第一个
每个
循环对每个元素只触发一次,因此它工作正常,但我似乎无法找到一种方法,通过
数据字段no
只选择一个字段,并将其值设置为
oldValue

标记为不工作的代码的两个部分都可以工作(如:没有抛出jQuery或javascript异常),但没有得到我想要的结果

“上次搜索的存储方式:”

原因:当内部/第二个
函数调用外部/第一个
函数时。每个
函数完成执行(3次)。因此,
oldFieldNo
&
oldValue
存储最后的执行值

现在,当第二个
。每个
函数执行3次时,它总是得到
oldFieldNo
&
oldValue
的最新/最后一个值

您可以使用包装器(例如,
closure
)为每个项目传递
oldFieldNo
&
oldValue
。它立即被调用函数(function(){})(,因此,为外部
调用immediated。每个
函数的迭代

尝试更改第二个
。每个
功能:

    $("#divSearchPopup .divBody input, #divSearchPopup .divBody select").each((function(oldFieldNo, oldValue){

    return function () {
      if ($(this).data('field-no') == oldFieldNo) {
        $(this).val(oldValue);
        return true;
    }
  }
})(oldFieldNo, oldValue));
“上次搜索的存储方式:”

原因:当内部/第二个
函数调用外部/第一个
函数时。每个
函数完成执行(3次)。因此,
oldFieldNo
&
oldValue
存储最后的执行值

现在,当第二个
。每个
函数执行3次时,它总是得到
oldFieldNo
&
oldValue
的最新/最后一个值

您可以使用包装器(例如,
closure
)为每个项目传递
oldFieldNo
&
oldValue
。它立即被调用函数(function(){})(,因此,为外部
调用immediated。每个
函数的迭代

尝试更改第二个
。每个
功能:

    $("#divSearchPopup .divBody input, #divSearchPopup .divBody select").each((function(oldFieldNo, oldValue){

    return function () {
      if ($(this).data('field-no') == oldFieldNo) {
        $(this).val(oldValue);
        return true;
    }
  }
})(oldFieldNo, oldValue));

使用
data()
时,破折号被忽略,您需要使用
.data('fieldNo')
请参阅使用此链接,我发现我可以使用破折号。它在我项目的其余部分也可以正常工作,所以为什么现在不可以呢?这很公平。在使用
data()和
时,我总是使用文档中所示的camelCase,但如果它对您有效,那么这不是您的问题。啊,对不起。我想让测试尽可能简单,所以我使用了一个没有
字段的表单。Aniway,当我能够通过'data field no'属性选择所有字段时,我会担心这一点。我试图理解你所说的
我似乎无法找到一种方法,通过data field no只选择一个字段,并将其值设置为oldValue
,但当运行你的代码时,它似乎很好,使用正确的输入选择器
.divBody input
而不是
。divBody select
我制作了一个我认为有效的选项,但是你能将你问题中的代码制作成一个演示问题的片段吗?使用
data()
时,破折号被忽略,你需要使用
.data('fieldNo'))
请参阅使用此链接,我发现我可以使用虚线链接。它在我项目的其余部分也可以正常工作,所以为什么现在不可以呢?这很公平。在使用
data()和
时,我总是使用文档中所示的camelCase,但如果它对您有效,那么这不是您的问题。啊,对不起。我想让测试尽可能简单,所以我使用了一个没有
字段的表单。Aniway,当我能够通过'data field no'属性选择所有字段时,我会担心这一点。我试图理解你所说的
我似乎无法找到一种方法,通过data field no只选择一个字段,并将其值设置为oldValue
,但当运行你的代码时,它似乎很好,使用正确的输入选择器
.divBody input
而不是
.divBody select
我做了一个我认为可行的选择,但是你能把你问题中的代码变成一个演示问题的片段吗?这太可笑了,你可以用
not
函数代替很多codesorry@Sajib,这似乎不起作用。我开始怀疑我的namihg方案有问题,这太荒谬了,你可以用
not
函数代替很多codesorry@Sajib,这似乎不起作用。我开始怀疑我的namihg计划有问题
    $("#divSearchPopup .divBody input, #divSearchPopup .divBody select").each((function(oldFieldNo, oldValue){

    return function () {
      if ($(this).data('field-no') == oldFieldNo) {
        $(this).val(oldValue);
        return true;
    }
  }
})(oldFieldNo, oldValue));