jQuery,下次点击显示函数结果
jQuery, display result of function on next click
我正在尝试对 magento 2.1 产品进行自动价格计算。当我在 snippet 或 jsfiddle 上测试我的代码时它正常工作,但是当在真正的 magento 站点上运行时 "mouseup" 计算函数的结果将显示在下一次点击(或从上一次点击)但在 "keyup" 上工作正常.有人对这个案例有任何答案吗?
$(document).ready(function(){
$(".control").on("keyup mouseup",function(){
var totale = 0;
$(".quantity-number .qty").each(function () {
var qty = parseFloat($(this).val());
//var price = parseFloat($(".price-wrapper").attr("data-price-amount"));
//var price = parseFloat($(".price").attr("data-price-amount"));
//var price = parseFloat($(".price").text());
var price = parseFloat($('.product-info-main span.price').text().match(/\d+/)[0], 10);
/*
var temp=$(".price").text();
var num = temp.match(/[\d\.]+/g);
if (num != null){
var price = num.toString();
}
*/
totale += qty * price;
totale = qty * price;
});
$(".cal-price").html("฿"+totale.toFixed(2));
});
});
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<div class="product-info-main">
<span class="price-wrapper" data-price-amount="10">
<span class="price">
฿10.00
</span>
<div class="control">
<div class="quantity-number">
<input type="number" name="qty" id="qty" maxlength="12" value="1" title="Quantity" class="input-text qty">
</div>
<span class="cal-price"></span>
</div>
https://jsfiddle.net/l2esforu/x6332ay3/
如果您想在输入元素中的值更改时调用该函数,请为输入元素本身的 "input" 事件添加一个事件侦听器。
$("#qty").on("input", function () { ... });
但是,如果您有多个数量输入,并且它们是动态添加的,您将需要像这样使用委托选择器:
$(".control").on("input", ".qty", function () {
// do stuff
});
我的问题已经解决了!谢谢
尝试使用每个状态后可能会在主 div 上发生。
$(document).on("input keyup change click mouseup",".control",function(){
$(".quantity-number .qty").each(function () {
//do stuff
});
}
我正在尝试对 magento 2.1 产品进行自动价格计算。当我在 snippet 或 jsfiddle 上测试我的代码时它正常工作,但是当在真正的 magento 站点上运行时 "mouseup" 计算函数的结果将显示在下一次点击(或从上一次点击)但在 "keyup" 上工作正常.有人对这个案例有任何答案吗?
$(document).ready(function(){
$(".control").on("keyup mouseup",function(){
var totale = 0;
$(".quantity-number .qty").each(function () {
var qty = parseFloat($(this).val());
//var price = parseFloat($(".price-wrapper").attr("data-price-amount"));
//var price = parseFloat($(".price").attr("data-price-amount"));
//var price = parseFloat($(".price").text());
var price = parseFloat($('.product-info-main span.price').text().match(/\d+/)[0], 10);
/*
var temp=$(".price").text();
var num = temp.match(/[\d\.]+/g);
if (num != null){
var price = num.toString();
}
*/
totale += qty * price;
totale = qty * price;
});
$(".cal-price").html("฿"+totale.toFixed(2));
});
});
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<div class="product-info-main">
<span class="price-wrapper" data-price-amount="10">
<span class="price">
฿10.00
</span>
<div class="control">
<div class="quantity-number">
<input type="number" name="qty" id="qty" maxlength="12" value="1" title="Quantity" class="input-text qty">
</div>
<span class="cal-price"></span>
</div>
如果您想在输入元素中的值更改时调用该函数,请为输入元素本身的 "input" 事件添加一个事件侦听器。
$("#qty").on("input", function () { ... });
但是,如果您有多个数量输入,并且它们是动态添加的,您将需要像这样使用委托选择器:
$(".control").on("input", ".qty", function () {
// do stuff
});
我的问题已经解决了!谢谢
尝试使用每个状态后可能会在主 div 上发生。
$(document).on("input keyup change click mouseup",".control",function(){
$(".quantity-number .qty").each(function () {
//do stuff
});
}