使用parent和find来选择DOM

时间:2015-09-16 13:34:43

标签: javascript jquery

我有这个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());应该返回现在的范围内但我错过了什么错误以及为什么我无法选择范围。 我的假设是:

  • with .parent(&#39; fieldset&#39;)我回到第一个DOM元素输入 和跨度有共同点
  • with .find(&#39; .cl&#39; + id_item)我得到了该类的第一个元素 (存在于呈现的HTML中)

我如何使用这两个选择器有什么问题?根据我对jQuery文档中读到的内容的理解,在我看来,选择它的方法是正确的!

1 个答案:

答案 0 :(得分:4)

输入元素的上下文在每个函数中都会丢失。 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());
 });