2016-03-11 20 views
4

我有一個關於jquery道具的問題。我已經創建了這個DEMO codepen.io點擊按鈕後,jQuery的道具不會被禁用

在這個演示中,你可以看到有兩個帶編號的編輯按鈕。當我點擊第一個編輯按鈕時,它工作正常。但編輯按鈕的工作也第二次點擊我想禁用當前點擊按鈕。我在這裏想念的人在這方面可以幫助我嗎?

JS

$(document).ready(function() { 
    $("body").on("click", ".editBtn", function() { 
     var ID = $(this).attr("id"); 
     $('#ser' + ID).prop('disabled', 'true'); 
     var currentMessage = $("#messageB" + ID + " .postInfo").html(); 
     var editMarkUp = '<textarea rows="5" cols="80" id="txtmessage_' + ID + '">' + currentMessage + '</textarea><button name="ok">Save</button><button name="cancel">Cancel</button>'; 
     $("#messageB" + ID + " .postInfo").html(editMarkUp); 
    }); 
}); 

HTML

<div class="container"> 
    <div class="postAr" id="messageB1"> 
     <div class="postInfo"> 
     fdasfads fasd fadsf adsf adsf adsf asd fasd f dfsa 
     </div> 
     <button class="editBtn" name="edit" id="ser1">Edit</button> 
    </div> 
</div> 
<div class="container"> 
    <div class="postAr" id="messageB2"> 
     <div class="postInfo"> 
     fdasfads fasd fadsf adsf adsf adsf asd fasd f dfsass 
     </div> 
     <button class="editBtn" name="edit" id="ser2">Edit</button> 
    </div> 
</div> 

回答

2

你不是針對button。使用$(this).prop()

$(this).prop('disabled', 'true'); 

OR

做你想要什麼的JavaScript的方法是暴露event對象並設置的event.targetdisabled屬性:

$(document).ready(function() { 
    $("body").on("click", ".editBtn", function(event) { 
     event.target.disabled = true; 

     ... 
    }); 
}); 

Updated CodePen

+0

只有id selector
檢查片段我學到新的東西。謝謝。 – Azzo

+0

不客氣:) – Yass

+0

我只是一個問題,如何關注當前點擊textarea。像'$(this).find('textarea')。focus();'我嘗試過這種方式,但沒有集中注意力。如果你有時間可以爲我回答這個問題嗎? – Azzo

1

當你使用這個選擇器$('.editBtn' + ID).prop('disabled', 'true')你沒有任何帶有的按鈕所以我用下面

$(document).ready(function() { 
 
    $("body").on("click", ".editBtn", function() { 
 
    var ID = $(this).attr("id"); 
 
    
 
    $('#' + ID).prop('disabled', 'true'); 
 
    var currentMessage = $("#messageB" + ID + " .postInfo").html(); 
 
    var editMarkUp = '<textarea rows="5" cols="80" id="txtmessage_' + ID + '">' + currentMessage + '</textarea><button name="ok">Save</button><button name="cancel">Cancel</button>'; 
 
    $("#messageB" + ID + " .postInfo").html(editMarkUp); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<div class="container"> 
 
    <div class="postAr" id="messageB1"> 
 
    <div class="postInfo"> 
 
     fdasfads fasd fadsf adsf adsf adsf asd fasd f dfsa 
 
    </div> 
 
    <button class="editBtn" name="edit" id="1">Edit</button> 
 
    </div> 
 
</div> 
 
<div class="container"> 
 
    <div class="postAr" id="messageB2"> 
 
    <div class="postInfo"> 
 
     fdasfads fasd fadsf adsf adsf adsf asd fasd f dfsass 
 
    </div> 
 
    <button class="editBtn" name="edit" id="2">Edit</button> 
 
    </div> 
 
</div>