删除类后,类选择器仍然有效

时间:2017-12-06 06:41:18

标签: jquery

我有一个实时类选择器( on ),它可以处理 numberonly 类的元素,并从字段中删除非数字值。即使从element:

中删除 numberonly 类,它也不会停止工作

$(document).ready(function(){
  $(".numberonly").on("input propertychange paste",function(){
    $(this).val($(this).val().replace(/[^\d.-]/g, ''));
  });
});
  
$(document).ready(function(){
  $("#myfield").removeClass("numberonly");		
})
input {width:300px;max-width:100%}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
This input should accept non-numeric values<br>because I removed class "numberonly":<br><br>
<input id="myfield" class="numberonly">

1 个答案:

答案 0 :(得分:1)

这是因为事件附加在DOM元素上而不是附加在选择器上。您应该在click事件中添加if条件以检查元素是否包含类:

$(document).ready(function(){
  $(".numberonly").on("input propertychange paste",function(){
    if($(this).hasClass('numberonly'))
       $(this).val($(this).val().replace(/[^\d.-]/g, ''));
  });
});

$(document).ready(function(){
   $(".numberonly").on("input propertychange paste",function(){
  if($(this).hasClass('numberonly'))
     $(this).val($(this).val().replace(/[^\d.-]/g, ''));
});
});
  
$(document).ready(function(){
  $("#myfield").removeClass("numberonly");		
})
input {width:300px;max-width:100%}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
This input should accept non-numeric values<br>because I removed class "numberonly":<br><br>
<input id="myfield" class="numberonly">