提交表单时,jquery无法识别动态类更改

时间:2012-05-27 01:42:47

标签: jquery forms addclass

我有一个带有“.disable”类的锚标记和一个将其切换为“.enable”的脚本。

if((counter.text() < 140) && (counter.text() >= 0)) {
  $('#tweet').addClass("enable");
  $('#tweet').removeClass("disable");
} else {
  $('#tweet').addClass("disable");
  $('#tweet').removeClass("enable");
}

锚点用于提交表单,但仅限于将类设置为“.enable”。

$(document).ready( function(){
  $(".enable").click( function(e){
    (e).preventDefault();
    $("#myform").submit();
  });
});

但是,这不起作用。第二个脚本似乎没有识别动态.class更改。如果我将上面代码中的类更改为“.disable”,则可以正常工作。

知道为什么吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

$(document).ready( function(){
  $("#tweet").click( function(e){
    (e).preventDefault();
    if ($(this).hasClass("enable")) {
       $("#myform").submit();
    }
  });
});

答案 1 :(得分:0)

您的代码无法正常工作的原因是因为您的代码将一个事件附加到页面加载时具有类enable的元素,这可能是无。因此,不会附加任何事件处理程序,并且您的代码永远不会运行。为了让您的处理程序更新您的类添加/删除,您应该使用.on()(如果您使用的是jQuery 1.7+)或.delegate()(如果您使用的是早于1.7的jQuery):

使用on()

$(function() {
    $("body").on("click", ".enable", function(e) {
        e.preventDefault();
        $("#myform").submit();
    });
});

使用delegate()

$(function() {
    $("body").delegate(".enable", "click", function(e) {
        e.preventDefault();
        $("#myform").submit();
    });
});