2014-10-10 156 views
0

下面我有jquery代碼和表。 jQuery代碼是在每次單擊回覆按鈕時切換名爲「divrep」的div元素。我想要的是我希望回覆按鈕在每次點擊時改變文本值。 所以最初,按鈕的文本值是「Replie(s)」。我想在單擊時將其更改爲「隱藏回覆」,並在再次單擊時再次回到「複製」。如何在我的代碼上添加腳本來執行此操作?謝謝...如何在每次點擊按鈕時更改按鈕的文本值?

的Jquery:

$(function() { 
    $('.Reply').click(function() { 
    $(this).closest('p').next('.divrep').toggle(!$(this).closest('p').next('.divrep').is(":visible")); 
    // How to insert a code here to change the text value of the reply button in every click? 
}); 
}); 

HTML:

<table id="mytable"> 

    <tr > 
     <td class="tdstyle" > 

    <div style="font-weight:bold;"> @Html.DisplayFor(modelItem => item.name) </div> 

    <p class="comment more" style ="white-space: pre-line; margin-top:0px;margin-bottom:0px; border-radius: 4px 4px 4px 4px; max-width :500px; min-height :5px; display :block; background-color: #CCCCFF"> @Html.DisplayFor(modelItem => item.comment) </p> 
    <p> <input type="button" id="like" name="like" value="Like" style="color:blue;border:0px;background-color:inherit;cursor:pointer" /> <input type="button" class ="Reply" name="Reply" value="Replie(s)" style="margin-bottom:0px;color:blue;border:0px;background-color:inherit;cursor:pointer" /></p>                                 
    <div id="divReply" class ="divrep" style="display:none; position:relative;left:50px; overflow:auto;margin-top:0px;margin-bottom:0px"> 
      <table> 

       <tr > 

        <td > 
         <div style="font-weight:bold;"> @Html.DisplayFor(modelItem => item2.name) </div> 

        <p class="comment more" style ="margin-top:0px;margin-bottom:0px;white-space:pre-line; border-radius: 4px 4px 4px 4px; max-width :445px; min-height :5px; display :block; background-color: #CCCCFF;">@Html.DisplayFor(modelItem => item2.reply) </p> 

        </td> 
       </tr> 

      </table>  

    <div> 
     <div class="editor-field" style="display:none; margin-bottom:5px;margin-top:5px"> 
      <input type="text" id="comidvalue" name="id" class="id" value="@Html.DisplayFor(modelItem => item.Id)" /> 
     </div> 

     <br /> 
     <input type="text" id="namerep" name="name" class="name" style="width:445px;resize:none" /> 

     <br /> 
     <textarea id="reply" name="reply" class="reply" style="width:445px;height:100px;resize:none" ></textarea> 

     <br /> 

     <input type="button" class="postrep" value="Post Reply" name="butname" style="cursor:pointer" /> 

    </div> 
      <br /> 

    </div> 
     </td>  
    </tr> 


</table> 
+0

什麼有關[小提琴](http://jsfiddle.net/)? – Manwal 2014-10-10 03:47:42

+0

如果你只有一個回覆按鈕,你不能只採取回覆按鈕的ID?而不是上課? – Dhwani 2014-10-10 03:49:32

+0

@DH__我無法使用該ID,因爲我忘記告訴你,表內有循環,這就是爲什麼我使用了類。你有什麼代碼來添加它? – timmack 2014-10-10 04:02:51

回答

2

您可以嘗試使用的可見性狀態設置文本值divrep

$(function() { 
 
    $('.Reply').click(function() { 
 
     var $divrep = $(this).closest('p').next('.divrep').toggle(!$(this).closest('p').next('.divrep').is(":visible")); 
 
     $(this).val($divrep.is(':visible') ? 'Hide Replie(s)' : 'Replie(s)') 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<table id="mytable"> 
 
    
 
    <tr > 
 
     <td class="tdstyle" > 
 
      
 
      <div style="font-weight:bold;"> @Html.DisplayFor(modelItem => item.name) </div> 
 
      
 
      <p class="comment more" style ="white-space: pre-line; margin-top:0px;margin-bottom:0px; border-radius: 4px 4px 4px 4px; max-width :500px; min-height :5px; display :block; background-color: #CCCCFF"> @Html.DisplayFor(modelItem => item.comment) </p> 
 
      <p> <input type="button" id="like" name="like" value="Like" style="color:blue;border:0px;background-color:inherit;cursor:pointer" /> <input type="button" class ="Reply" name="Reply" value="Replie(s)" style="margin-bottom:0px;color:blue;border:0px;background-color:inherit;cursor:pointer" /></p>                                 
 
      <div id="divReply" class ="divrep" style="display:none; position:relative;left:50px; overflow:auto;margin-top:0px;margin-bottom:0px"> 
 
       <table> 
 
        
 
        <tr > 
 
         
 
         <td > 
 
          <div style="font-weight:bold;"> @Html.DisplayFor(modelItem => item2.name) </div> 
 
          
 
          <p class="comment more" style ="margin-top:0px;margin-bottom:0px;white-space:pre-line; border-radius: 4px 4px 4px 4px; max-width :445px; min-height :5px; display :block; background-color: #CCCCFF;">@Html.DisplayFor(modelItem => item2.reply) </p> 
 
          
 
         </td> 
 
        </tr> 
 
        
 
       </table>  
 
       
 
       <div> 
 
        <div class="editor-field" style="display:none; margin-bottom:5px;margin-top:5px"> 
 
         <input type="text" id="comidvalue" name="id" class="id" value="@Html.DisplayFor(modelItem => item.Id)" /> 
 
        </div> 
 
        
 
        <br /> 
 
        <input type="text" id="namerep" name="name" class="name" style="width:445px;resize:none" /> 
 
        
 
        <br /> 
 
        <textarea id="reply" name="reply" class="reply" style="width:445px;height:100px;resize:none" ></textarea> 
 
        
 
        <br /> 
 
        
 
        <input type="button" class="postrep" value="Post Reply" name="butname" style="cursor:pointer" /> 
 
        
 
       </div> 
 
       <br /> 
 
       
 
      </div> 
 
     </td>  
 
    </tr> 
 
</table>

+0

這不會更改class =「Reply」按鈕的文本值。你爲什麼使用divrep? divrep是要切換的div元素,但這不是我關心的問題。我擔心的是要改變回覆按鈕的值。 – timmack 2014-10-10 03:58:58

+0

@timmack我以爲'Reply'是一個錨元素....因爲它是'輸入'使用'.val()' – 2014-10-10 04:04:59

+0

謝謝你johnny。它正在工作。之所以沒有在第一篇文章中工作,是因爲你忘了添加這個var $ divrep – timmack 2014-10-10 04:11:45

1

對於<input>按鈕,就可以傳遞給.val()方法來檢查當前值,並返回新值的函數來進行相應的設置:

$(".Reply").val(function(i, value){ 
    return (value=="Replie(s)") ? "Hide Replie(s)" : "Replie(s)" 
}); 

對於<button>元素,可以使用.text()方法做同樣的事情。

+0

我試過了,但那不會返回正在設置的文本值。但是這一個將會,$(this).val($ divrep.is(':visible')?'隱藏Replie(s)':'Replie(s)') – timmack 2014-10-10 04:17:37

+0

對不起,我沒有注意到它是一個' '按鈕,嘗試更新... – 2014-10-10 04:19:09

+0

真棒,謝謝... – timmack 2014-10-10 04:24:14

0

只需添加到您的JS(而不是你的//註釋行):

$(this).val($(this).val() == "Replie(s)" ? "Hide Replies" : "Replie(s)"); 

http://jsfiddle.net/the_julo/tnx5gd6u/2/

+0

只注意到我的答案只是T J的簡寫。 如果對某人有用,我會留下它。 – JuLo 2014-10-10 04:35:19

相關問題