jquery插件多次触发

时间:2011-03-08 03:43:13

标签: jquery jquery-plugins namespaces

我有一个插件可以比较表单中的2个字段,并根据结果发出警报。 它工作正常,除了我有多个表格。不过我在页面上有很多表单,插件运行的次数相同。这是一个命名空间问题吗?

$(document).ready(function() {
  (function( $ ){
    $.fn.totalPressedQuantityCheck = function(){
      var form = $(this).parents('form');
      var total_pressed_field = form.find('input[id*="total_pressed"]');
      var variation_quantity_field = form.find('input[id*="quantity"]');

      var total_pressed_amount = parseInt(total_pressed_field.val());
      var variation_quantity_amount = parseInt(variation_quantity_field.val());

      if ( !isNaN(total_pressed_amount) && !isNaN(variation_quantity_amount) ){

        if ( total_pressed_amount < variation_quantity_amount ){
          alert("PROBLEM");
        }
      }
    }
  })( jQuery );

  $('input[id*="total_pressed"]').live('blur', function(){
    $(this).totalPressedQuantityCheck();
  });
  $('input[id*="quantity"]').live('blur', function(){
    $(this).totalPressedQuantityCheck();
  });

FIX 其中一件事......我的js最终出现在我的循环中并且多次在HTML中呈现。感谢jsfiddle网站。我能够轻松地提取我的代码并缩小它的问题范围。我希望我之前知道这个网站!

2 个答案:

答案 0 :(得分:0)

我相信您的问题是当您关联插件时

 $('input[id*="total_pressed"]').live('blur', function(){
    $(this).totalPressedQuantityCheck();
  });

这会将两个表单的任何输入绑定到此函数。您所要做的就是使用更具体的选择器。

答案 1 :(得分:0)

所以我的js在我的循环中结束并且多次在HTML中呈现。杜尔。并感谢jsfiddle网站。我能够轻松地提取我的代码并缩小问题范围。我希望我之前知道这个网站!