Javascript 隐藏输入值动态变化时的jQuery addClass

Javascript 隐藏输入值动态变化时的jQuery addClass,javascript,jquery,javascript-events,addclass,Javascript,Jquery,Javascript Events,Addclass,我有一个联系人表单,它在成功完成sendmail功能时向隐藏的输入发送一个值。我想检测这个值的变化,然后用它将一个类应用于div/段落 最近我问了一个类似的问题,我知道这需要脚本在加载DOM后不断检查文档,但即使在添加.change()之后,它似乎也不想添加类 以下是jQuery: $(document).ready(function() { $("#acf_success_sent").change(function(){ if ($("#acf_success_sent").v

我有一个联系人表单,它在成功完成sendmail功能时向隐藏的输入发送一个值。我想检测这个值的变化,然后用它将一个类应用于div/段落

最近我问了一个类似的问题,我知道这需要脚本在加载DOM后不断检查文档,但即使在添加.change()之后,它似乎也不想添加类

以下是jQuery:

$(document).ready(function() {
   $("#acf_success_sent").change(function(){
    if ($("#acf_success_sent").val() == "1"){
     $("#acf_verified").addClass('gone');
     }
   });

 });
任何帮助都会很好。这里有一个指向表单测试版本的链接,以防您感兴趣,除了成功发送后验证的符号不会消失外,其他所有功能都正常

当代码更新
元素的值时,不会触发“更改”事件,因此您注册的处理程序不会运行。然而,你可以做的是从一个看门狗那里触发“改变”:

var watchdog = setInterval(function() {
  if ($('#acf_success_sent').val() !== originalValue)
    $('#acf_success_sent').trigger('change');
}, 100);
如何设置“originalValue”取决于您的应用程序。例如,您可以保留一个单独的“.data()”值,并在保存的值与当前的“value”属性不同时进行监视。或者您可以将该值保留在闭包变量中:

var watchdog = (function() {
  var $acfSuccessSent = $('#acf_success_sent'), cachedValue = $acfSuccessSent.val();
  return function() {
    if (cachedValue !== $acfSuccessSent.val())
      $acfSuccessSent.trigger('change');
  };
})();

除非发送表单,否则originalValue将始终为0,这样我就可以直接输入!==“0”)我想是吧?!我试试看。谢谢。是的,如果您知道原始值,并且只关心从中进行的更改,那么您可以简化。当然,更简单的是,您可以在计时器例程本身中完成所有工作:-)它第一次工作。非常感谢你,现在买一本jQuery的书,我受够了这么跛脚。好消息:(还有,很抱歉,2012年的人:-)或者如果($('acf_success_sent').val()!=$('acf_success_sent')[0]。默认值)