JQuery Каждая функция не работает Как я ожидаю

Я пытаюсь изменить значения таблиц в событии изменения. Когда .woocommerce-variationогонь, новое отношение рассчитывается путем многократного заполнения totalvaluefirst. Затем используйте totalvaluelastдля установки текста. Но при запуске второго события totalvaluefirstостается неизменным и текст не изменяется.

jQuery('.woocommerce-variation').bind("DOMSubtreeModified",function(){        
    jQuery( ".total-value" ).each(function() {
        var totalvaluefirst = (jQuery( this ).text() );

        var totalvaluefirstnew = ratio * totalvaluefirst;
        var totalvaluelast = Math.round( totalvaluelast * Math.pow(10, 2) ) / Math.pow(10, 2);  
        jQuery( this ).text(totalvaluelast);
    });
});

javascript,jquery,text,each,dom-manipulation,

0

Ответов: 1


0

См. Также https://jsfiddle.net/ngfkqbvt/

Я добавил гарантию: когда вы изменяете dom, изменяя общую стоимость, это не должно приводить к повторной обработке события DOM.

HTML:

<div class="woocommerce-variation">
   <div class="row">1
     <div class="single-value">
     11
     </div>
     <div class="total-value">

     </div>
   <div class="row">2
     <div class="single-value">
     20
     </div>
     <div class="total-value">

     </div>
   </div>
</div>

JavaScript:

var ratio = 3.0;
var modifyingDOM = false;
jQuery('.woocommerce-variation').bind("DOMSubtreeModified",function(){ 
    if(modifyingDOM) 
    return;
    modifyingDOM = true;
    jQuery(this).find( ".row" ).each(function() {
        var totalvaluefirst = parseInt(jQuery( this ).find(".single-value").text() );

        var totalvaluefirstnew = ratio * totalvaluefirst;
        var totalvaluelast = Math.round( totalvaluefirstnew * Math.pow(10, 2) ) / Math.pow(10, 2); 
        jQuery( this ).find(".total-value").text(totalvaluelast);
    });
    modifyingDOM = false;
});

//change the DOM
jQuery('.woocommerce-variation').trigger("DOMSubtreeModified");
JavaScript, JQuery, текст, каждый, дом-манипуляция,
Похожие вопросы