Javascript 为什么可以';t I更新数据属性I';我在jQuery中迭代?
我有一把小提琴,它显示了我遇到的确切情况 我想知道为什么我要做Javascript 为什么可以';t I更新数据属性I';我在jQuery中迭代?,javascript,jquery,Javascript,Jquery,我有一把小提琴,它显示了我遇到的确切情况 我想知道为什么我要做$('[data-prototype]')。每个我都不能用$(this)更新数据属性。data('prototype',value),但需要使用$(this.attr('data-prototype',value) 当一个click事件稍后用.data('prototype')抓取原型时,就好像它抓取的是DOM值,而不是应该在jQuery局部变量中更新的值。就我所理解的.attrvs.data而言,我本以为两者之间是相反的 编辑:在小
$('[data-prototype]')。每个我都不能用$(this)更新数据属性。data('prototype',value)
,但需要使用$(this.attr('data-prototype',value)
当一个click事件稍后用.data('prototype')
抓取原型时,就好像它抓取的是DOM值,而不是应该在jQuery局部变量中更新的值。就我所理解的.attr
vs.data
而言,我本以为两者之间是相反的
编辑:在小提琴中实现了事件片段的简化版本后,它似乎按照预期工作。我的其他LIB中一定有导致冲突的内容。两个代码返回相同的结果
这:
$('[data-prototype]').each(function(i, element) {
var prototype = $($(element).data('prototype'));
prototype.find('label').each(function(l, label) {
$(label).text('****'); //removed code for clarity
});
$(this).data('prototype', prototype[0].outerHTML);
console.log( $(this).data('prototype'))
});
收益率:
<div class="form-group"><label class="control-label required">****</label><div id="ew_ability_attributeComponents___name__"><div class="form-group"><label class="control-label" for="ew_ability_attributeComponents___name___attribute">****</label><select id="ew_ability_attributeComponents___name___attribute" name="ew_ability[attributeComponents][__name__][attribute]" class="form-control"><option value=""></option><option value="1">Reflexes</option></select></div><div class="form-group"><label class="control-label required" for="ew_ability_attributeComponents___name___composition">****</label><div class="input-group"><input type="text" id="ew_ability_attributeComponents___name___composition" name="ew_ability[attributeComponents][__name__][composition]" required="required" class="form-control"><span class="input-group-addon">%</span>
</div></div></div></div>
<div class="form-group"><label class="control-label required">****</label><div id="ew_ability_attributeComponents___name__"><div class="form-group"><label class="control-label" for="ew_ability_attributeComponents___name___attribute">****</label><select id="ew_ability_attributeComponents___name___attribute" name="ew_ability[attributeComponents][__name__][attribute]" class="form-control"><option value=""></option><option value="1">Reflexes</option></select></div><div class="form-group"><label class="control-label required" for="ew_ability_attributeComponents___name___composition">****</label><div class="input-group"><input type="text" id="ew_ability_attributeComponents___name___composition" name="ew_ability[attributeComponents][__name__][composition]" required="required" class="form-control"><span class="input-group-addon">%</span>
</div></div></div></div>
收益率:
<div class="form-group"><label class="control-label required">****</label><div id="ew_ability_attributeComponents___name__"><div class="form-group"><label class="control-label" for="ew_ability_attributeComponents___name___attribute">****</label><select id="ew_ability_attributeComponents___name___attribute" name="ew_ability[attributeComponents][__name__][attribute]" class="form-control"><option value=""></option><option value="1">Reflexes</option></select></div><div class="form-group"><label class="control-label required" for="ew_ability_attributeComponents___name___composition">****</label><div class="input-group"><input type="text" id="ew_ability_attributeComponents___name___composition" name="ew_ability[attributeComponents][__name__][composition]" required="required" class="form-control"><span class="input-group-addon">%</span>
</div></div></div></div>
<div class="form-group"><label class="control-label required">****</label><div id="ew_ability_attributeComponents___name__"><div class="form-group"><label class="control-label" for="ew_ability_attributeComponents___name___attribute">****</label><select id="ew_ability_attributeComponents___name___attribute" name="ew_ability[attributeComponents][__name__][attribute]" class="form-control"><option value=""></option><option value="1">Reflexes</option></select></div><div class="form-group"><label class="control-label required" for="ew_ability_attributeComponents___name___composition">****</label><div class="input-group"><input type="text" id="ew_ability_attributeComponents___name___composition" name="ew_ability[attributeComponents][__name__][composition]" required="required" class="form-control"><span class="input-group-addon">%</span>
</div></div></div></div>
*******反射*****%
考虑到无法比较的结果,两者都是相同的:
可能的副本您有额外的`});`最后。你的代码不正确work@RoyiNamir谢谢,当我切下包装时没有改变代码的影响,我错过了这一点。当我在循环中使用console.log时,这就是我所期望的,但是当一个事件稍后捕获.data('prototype')
时,它就好像从dom中抓取了它一样,我希望使用.attr
时会出现这种情况,因为两者的存储位置不同。