2013-02-20 97 views
1

我有這樣的代碼:addClass不工作

<div class="tableperso input-append"> 
<form id="perso" action="form/perso.php" method="post"> 
<table class="table2 table-bordered"> 
    <tr> 
    <td> 
     <input class="input-medium" type="text" placeholder="CMS" name="cmsperso" id="cmsperso" pattern="[-.,_ a-zA-ZáàâäãéèêëíìîïóòôöõúùûüýÿÁÀÂÄÃÉÈÊËÍÌÎÏÓÒÔÖÕÚÙÛÜÝ]+" /> 
     <input class="separ2 input-medium" type="text" placeholder="Chef de Quart" name="chefdequart" id="chefdequart" pattern="[-.,_ a-zA-ZáàâäãéèêëíìîïóòôöõúùûüýÿÁÀÂÄÃÉÈÊËÍÌÎÏÓÒÔÖÕÚÙÛÜÝ]+" /> 
     <input class="separ2 input-medium" type="text" placeholder="Adjoint" name="adjoint" id="adjoint" pattern="[-.,_ a-zA-ZáàâäãéèêëíìîïóòôöõúùûüýÿÁÀÂÄÃÉÈÊËÍÌÎÏÓÒÔÖÕÚÙÛÜÝ]+" /> 
    </td> 
    <td class="button"> 
     <button id="persobtn" type="submit" name="persobtn" class="btn"><i class="icon-ok"></i></button> 
    </td> 
    </tr> 
</table> 
</form> 
</div> 

<script type="text/javascript"> 
$(function() { 
$('#perso').submit(function() { 
    $.ajax({ 
    url: this.action, 
    type: this.method, 
    data: $(this).serialize(), 
    success: function(data){ 
     data = $.parseJSON(data); 
     if(data.status == "ok") { 
      var now = new Date(); 
      var hours = now.getHours(); 
      if (now.getHours() <= 9) { 
       var hours = '0'+now.getHours(); 
      } 
      else { 
       var hours = now.getHours(); 
      } 
      var minutes = now.getMinutes(); 
      if (now.getMinutes() <= 9) { 
       var minutes = '0'+now.getMinutes(); 
      } 
      else { 
       var minutes = now.getMinutes(); 
      } 
      var cmsperso = $("#cmsperso").val(); 
      var chefdequart = $("#chefdequart").val(); 
      var adjoint = $("#adjoint").val(); 
      var emptycmsperso = $("#cmsperso").val().length == 0; 
      var emptychefdequart = $("#chefdequart").val().length == 0; 
      var emptyadjoint = $("#adjoint").val().length == 0; 

      if (emptycmsperso && emptychefdequart && emptyadjoint) { 
      $('#persobtn').addClass('btn-danger') 
       .delay(1000) 
       .queue(function() { 
       $(this).removeClass('btn-danger'); 
       $(this).dequeue(); 
       }); 
      } 
      else if (emptycmsperso && emptychefdequart) { 
      $('#persobtn').addClass('btn-success') 
        .delay(1000) 
        .queue(function() { 
        $(this).removeClass('btn-success'); 
        $(this).dequeue(); 
        }); 
      var nouvelle_ligne = $('<tr><td class="thtime">'+hours+'h'+minutes+'</td><td>Prise de fonction de <b class="textepersoadj">'+adjoint+'</b> en tant qu\'adjoint.</td><td class="button"><button class="editperso"><i class="icon-pencil"></i></button></td><td class="button"><button class="trashperso"><i class="icon-trash"></i></button></td></tr>').fadeIn('fast'); 
      } 
      else if (emptychefdequart && emptyadjoint) { 
      $('#persobtn').addClass('btn-success') 
        .delay(1000) 
        .queue(function() { 
        $(this).removeClass('btn-success'); 
        $(this).dequeue(); 
        }); 
      var nouvelle_ligne = $('<tr><td class="thtime">'+hours+'h'+minutes+'</td><td>Prise de fonction de <b class="textepersocms">'+cmsperso+'</b> en tant que CMS.</td><td class="button"><button class="editperso"><i class="icon-pencil"></i></button></td><td class="button"><button class="trashperso"><i class="icon-trash"></i></button></td></tr>').fadeIn('fast'); 
      } 
      else if (emptycmsperso && emptyadjoint) { 
      $('#persobtn').addClass('btn-success') 
        .delay(1000) 
        .queue(function() { 
        $(this).removeClass('btn-success'); 
        $(this).dequeue(); 
        }); 
      var nouvelle_ligne = $('<tr><td class="thtime">'+hours+'h'+minutes+'</td><td>Prise de fonction de <b class="textepersocdq">'+chefdequart+'</b> en tant que Chef de Quart.</td><td class="button"><button class="editperso"><i class="icon-pencil"></i></button></td><td class="button"><button class="trashperso"><i class="icon-trash"></i></button></td></tr>').fadeIn('fast'); 
      } 
      else if (emptycmsperso) { 
      $('#persobtn').addClass('btn-success') 
        .delay(1000) 
        .queue(function() { 
        $(this).removeClass('btn-success'); 
        $(this).dequeue(); 
        }); 
      var nouvelle_ligne = $('<tr><td class="thtime">'+hours+'h'+minutes+'</td><td>Modification de l\'équipe de Quart : <b class="textepersocdq">'+chefdequart+'</b> prend la fonction de Chef de Quart et <b class="textepersoadj">'+adjoint+'</b> prend celle d\'adjoint.</td><td class="button"><button class="editperso"><i class="icon-pencil"></i></button></td><td class="button"><button class="trashperso"><i class="icon-trash"></i></button></td></tr>').fadeIn('fast'); 
      } 
      else if (emptychefdequart) { 
      $('#persobtn').addClass('btn-success') 
        .delay(1000) 
        .queue(function() { 
        $(this).removeClass('btn-success'); 
        $(this).dequeue(); 
        }); 
      var nouvelle_ligne = $('<tr><td class="thtime">'+hours+'h'+minutes+'</td><td>Modification de l\'équipe de Quart : <b class="textepersocms">'+cmsperso+'</b> prend la fonction de CMS et <b class="textepersoadj">'+adjoint+'</b> prend celle d\'adjoint.</td><td class="button"><button class="editperso"><i class="icon-pencil"></i></button></td><td class="button"><button class="trashperso"><i class="icon-trash"></i></button></td></tr>').fadeIn('fast'); 
      } 
      else if (emptyadjoint) { 
      $('#persobtn').addClass('btn-success') 
        .delay(1000) 
        .queue(function() { 
        $(this).removeClass('btn-success'); 
        $(this).dequeue(); 
        }); 
      var nouvelle_ligne = $('<tr><td class="thtime">'+hours+'h'+minutes+'</td><td>Modification de l\'équipe de Quart : <b class="textepersocms">'+cmsperso+'</b> prend la fonction de CMS et <b class="textepersocdq">'+chefdequart+'</b> prend celle de Chef de Quart.</td><td class="button"><button class="editperso"><i class="icon-pencil"></i></button></td><td class="button"><button class="trashperso"><i class="icon-trash"></i></button></td></tr>').fadeIn('fast'); 
      } 
      else { 
      $('#persobtn').addClass('btn-success') 
        .delay(1000) 
        .queue(function() { 
        $(this).removeClass('btn-success'); 
        $(this).dequeue(); 
        }); 
      var nouvelle_ligne = $('<tr><td class="thtime">'+hours+'h'+minutes+'</td><td>Modification de l\'équipe de Quart : <b class="textepersocms">'+cmsperso+'</b> prend la fonction de CMS, <b class="textepersocdq">'+chefdequart+'</b> prend celle de Chef de Quart et <b class="textepersoadj">'+adjoint+'</b> prend celle d\'adjoint.</td><td class="button"><button class="editperso"><i class="icon-pencil"></i></button></td><td class="button"><button class="trashperso"><i class="icon-trash"></i></button></td></tr>').fadeIn('fast'); 
      } 
      $('#tablemc').append(nouvelle_ligne); 
     } 
     else { 
      alert(data.error); 
     } 
    } 
    }); 
return false; 
}); 
$(document).on("click", ".trashperso", function(e){ 
    e.preventDefault(); 
    var $ligneParent = $(this).parent().parent(); 
    trashperso($ligneParent); 
}); 

function trashperso(aLigneToTrash) { 
if (confirm("Vous allez supprimer définitivement cette ligne !")) { 
    var cmsperso = aLigneToTrash.children().children('.textepersocms').html(); 
    var chefdequart = aLigneToTrash.children().children('.textepersocdq').html(); 
    var adjoint = aLigneToTrash.children().children('.textepersoadj').html(); 

    $.ajax({ 
    type: "POST", 
    url: "form/delete/deleteperso.php", 
    data: { cmsperso: cmsperso, chefdequart: chefdequart, adjoint: adjoint }, 
    cache: false, 
    success: function() { 
     aLigneToTrash.fadeOut('slow', function() { 
     aLigneToTrash.remove(); 
     }); 
    } 
    }); 
    return false;  
} 
} 

$(document).on("click", ".editperso", function(f){ 
    f.stopPropagation(); 
    var $CellParent = $(this).closest('td').prev().prev(); 
    editperso1($CellParent); 
}); 

function editperso1(aCellToEdit) { 
    aCellToEdit.editable({ 
    mode: 'inline', 
    inputclass: 'input-mini' 
    }); 
} 

$(document).on("click", ".editperso", function(g){ 
    g.stopPropagation(); 
    var $CellParent = $(this).closest('td').prev().children('b'); 
    editperso2($CellParent); 
}); 

function editperso2(bCellToEdit) { 
    bCellToEdit.editable({ 
    mode: 'inline', 
    inputclass: 'input-medium texteperso', 
    type: 'text', 
    success: function() { 
     var cmsperso = $('.textepersocms').next('span').children('div').children('form').children('div').children('div').children('div').children('input.texteperso').val(); 
    var chefdequart = $('.textepersocdq').next('span').children('div').children('form').children('div').children('div').children('div').children('input.texteperso').val(); 
    var adjoint = $('.textepersoadj').next('span').children('div').children('form').children('div').children('div').children('div').children('input.texteperso').val(); 

    if(cmsperso === undefined) { var cmsperso = $(this).closest('td').children('.textepersocms').html(); } 
    if(chefdequart === undefined) { var chefdequart = $(this).closest('td').children('.textepersocdq').html(); } 
    if(adjoint === undefined) { var adjoint = $(this).closest('td').children('.textepersoadj').html(); } 

    var cmsperso2 = $(this).closest('td').children('.textepersocms').html(); 
    var chefdequart2 = $(this).closest('td').children('.textepersocdq').html(); 
    var adjoint2 = $(this).closest('td').children('.textepersoadj').html(); 

    var pattern = /^[\-.,_ a-zA-ZáàâäãéèêëíìîïóòôöõúùûüýÿÁÀÂÄÃÉÈÊËÍÌÎÏÓÒÔÖÕÚÙÛÜÝ]+$/; 
    var patterncms = pattern.test(cmsperso); 
    var patterncdq = pattern.test(chefdequart); 
    var patternadj = pattern.test(adjoint); 

    if (patterncms == true && patterncdq == true && patternadj == true) { 
     $.ajax({ 
     type: "POST", 
     url: "form/update/updateperso.php", 
     data: { cmsperso: cmsperso, cmsperso2: cmsperso2, chefdequart: chefdequart, chefdequart2: chefdequart2, adjoint: adjoint, adjoint2: adjoint2 } 
     }); 
    } 
    else { 
     $('input.texteperso').parents('div.control-group').each(function() { 
     $(this).addClass('error'); 
     console.log($(this)); 
     }); 
     return false; 
    } 
    } 
    }); 
} 
}); 

addClass不工作,使用jQuery 1.9.1和2.3.0自舉。在此代碼之前,我使用類「control-group」在div中創建了一個動態輸入。如果沒有錯誤,一切工作正常,但如果有一個問題,我想補充類「錯誤」,但執行console.log返回「jQuery(div.control-group)」沒有錯誤類。

和 「這個」 重返<div class="control-group">

當我嘗試addClass,沒有什麼變化。

當我嘗試attr('class', 'error'),我有錯誤。

當我嘗試attr('class', 'control-group error'),我只有控制組

,當我嘗試attr('class', 'control-group'+ 'error'),我有控制grouperror(無空格)

感謝幫助我

+0

是什麼'this'在上下文 – 2013-02-20 05:42:10

+0

的方式發表您的HTML太 – bipen 2013-02-20 05:44:36

回答

0

使用jQuery遷移和不是jquery 1.9 有最新版本的正弦錯誤。而我要說的是最新的版本是不是穩定

jquery.com/download/

+0

你肯定有'$的拼寫('input.texteperso')' – asifsid88 2013-02-20 05:45:02

+0

jquery migrate沒有任何改變,是的,我確定輸入。 texteperso ... – user1825668 2013-02-20 06:02:22

0

你應該嘗試.parents jQuery的功能。

如何.parents工作。

例如

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript"> 

    $(function() 
    { 
     console.log($("#getMe").parents('div#main')); 
     console.log($("#getMe").parents('div#second')); 
    }); 

</script> 


<div id="main"> 
    <div id="second"> 
     <div id="first"> 
      <div>1</div> 
      <div>2</div> 
      <div id="getMe">3</div> 
     </div> 
    </div> 
</div>

.parents得到所有家長的具體dom這是選擇使用jQuery選擇dom

現在通過選擇到.parents那麼它將返回傳遞dom

你的情況

它必須爲$("input.texteperso").parents('div.control-group')

也改變patterncms===true && patterncdq===true && patternadj===truepatterncms == true && patterncdq == true && patternadj == true

+0

感謝您的幫助,我試過 'else {'input.texteperso')。parents('div.control-group')。each(function(){(this)。 addClass( '錯誤'); 的console.log($(本)); }); 返回false; }' 但沒有任何變化。 – user1825668 2013-02-20 06:13:03

+0

你有沒有檢查過新附加班級的螢火蟲? – 2013-02-20 06:18:39

+0

@ user1825668,也沒有必要使用。每個代替你也可以做到這一點爲$(「input.texteperso」)。父母( 'div.control組')addClass( '錯誤')。 – 2013-02-20 06:20:15