我正在进行第一次表单计算,这是我在最后一天研究并提出的jQuery。
这只是我发现的一切都工作顺便,不一定是最好的方式。我的老板希望我使用.blur()
而不是.on()
,但我觉得,.on()
能够使用 keyup&单击表单输入上的。
有人可以告诉我哪种情况更适合在这种情况下使用? .on()
是否已被折旧并且更好地使用.blur()
还是在这种情况下它们都可以正常使用?此外,如果模糊是更好的使用可以有人告诉我如何重新做我的功能w /模糊所以我在正确的道路上?谢谢!
$(".ticket input").on("keyup click", function(){
//input changes Individual total
var thisTotal = $(this).closest(".info").find('.total p span');
var thisPrice = $(this).closest(".info").find('.price p span');
var thisInput = $(this).closest(".info").find('.ticket input');
thisTotal.html(thisPrice.html() * thisInput.val());
//input changes Grand total
var sum = 0;
$('.total p span').each(function(){
sum += parseFloat($(this).text());
$('.gTotal span').html(sum);
});
});
答案 0 :(得分:3)
使用.blur()
(或"模糊"事件监听器)的事情是,只有在您远离字段时才会更新小计,因此更新不是&#34实况#34; 本身。我建议你坚持听取点击和键盘事件,以便在旅途中更新小计。
如果您想使用模糊,只需更改此行:
$(".ticket input").on("keyup click", function(){
...到这一行:
$(".ticket input").on("blur", function(){
您可以在这个小提琴(http://jsfiddle.net/teddyrised/V5hrY/7/)中看到使用.blur()
侦听器的位置,您可以看到更改数量时不会立即更新小计,但只有在您远离该领域。
p / s:就像我在评论中提到的那样,使用.on()
是正确的方法。事实上,它已经被弃用了(.live()
和.delegate()
。我肯定会建议使用.on()
而不是.blur()
:)你的直觉实际上是正确的;)
另外,如果你想将事件监听器绑定到动态添加的元素,我建议使用以下命名法:
$(document).on("keyup click", ".ticket input", function(){
...或者如果你想听模糊事件:
$(document).on("blur", ".ticket input", function(){
答案 1 :(得分:1)
您可以将.on()与许多不同的事件一起使用,包括.blur()。 所以你实际上可以使用:
$(document).on("blur", ".ticket input", function(){
});
你可以称之为“最佳实践”。 但在这种情况下,我认为keyup是好的所以我建议:
$(document).on("keyup", ".ticket input", function(){
});
祝你好运
答案 2 :(得分:1)
.blur()不适用于动态添加元素,也需要在ready函数中声明,而.on(' blur')有效。 看看
$(function(){
$('#elm').blur(function(){ alert('Blured') });
// assume element button with id button is already present in html
$('#button').click(function(){
$('body').append('<input type="text" id="elm" />'); // blur event above will not work on input with id elm
});
});
$(document).on('blur','#elm',function(){ alert('blured') }); // this will work for dynamic added input field