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));