我有这个js用来自一些数学的新值更新跨度值。
$('.ammesso').blur(function(){
ammesso = $(this).val();
perc_worst ='<?php echo $az_info['perc_worst']; ?>';
if(isNaN(ammesso)){
console.log(ammesso);
}else{
flusso = ammesso*perc_worst/100;
var jsonObject = $.parseJSON(prevs);
console.log(prevs);
$.each(jsonObject, function (i, obj) {
console.log(obj.id);
var id_item = obj.id;
//it gets the right value of 393
console.log('testo: '+$(this).parent('fieldset').find('.cl'+id_item).text());
});
console.log('flusso calcolato: '+flusso);
}
});
html 如下:
<fieldset>
<label>Ammesso: </label><input type="text" name="ammesso[0]" value="" class="ammesso numerico">
<label>Incassi previsti: </label>
<ul id="lista">
<li class="soff_grp">Value - <span class="cl393">CASH</span></li>
</ul>
</fieldset>
console.log('testo: '+$(this).parent('fieldset').find('.cl'+id_item).text());
应该返回什么现在在跨度内,但我想念出了什么问题以及为什么我无法选择跨度。
我的假设是:
- 使用 .parent('fieldset') 我回到第一个 DOM 元素输入 和span有共同点
- 使用 .find('.cl'+id_item) 我得到该类的第一个元素 (存在于渲染的 HTML 中)
我使用这两个选择器的方式有什么问题?根据我在 jQuery 文档中所读到的内容的理解,在我看来,选择它的正确方法!
最佳答案
输入元素的上下文在每个函数中都会丢失。 this
引用您正在迭代的 jsonObject
中的元素。您需要在每个循环外部存储元素上下文,然后在每个函数中使用它:
var fieldset = $(this).parent('fieldset');
$.each(jsonObject, function (i, obj) {
console.log(obj.id);
var id_item = obj.id;
//it gets the right value of 393
console.log('testo: ' + fieldset.find('.cl'+id_item).text());
});
关于javascript - 使用parent和find来选择DOM中的一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610144/