2015-11-19 62 views
0

我有按鈕的div。如果div是封面,按鈕的文本是'封面',並且它被禁用。其他按鈕有文字'設置爲封面'並啓用。如果我點擊其他按鈕,它應該將其文本更改爲「封面」並變爲禁用狀態。那個'封面'應該改爲'設置爲封面'並且被啓用。Jquery:更改按鈕及其兄弟的屬性點擊

的JavaScript

function setCoverObject(id) { 
    var url = "{{ path('collection_set_cover', {'id' : id}) }}"; 
    $.ajax({ 
     url: url, 
     success: function (data) { 
      $(this).prop('disabled', true); 
      $(this).attr('value', 'Cover'); 
      $(this).siblings('.set_as_cover').prop('disabled', false); 
      $(this).siblings('.set_as_cover').attr('value', 'Set cover'); 
     } 
    }); 
} 

嫩枝

{% for object in collection.objects %} 
<div class="object"> 
<button id="cover_button_{{ object.id }}"class="set_as_cover" 
         onclick="setCoverObject('{{ object.id }}'); return false;"> 
         Set cover 
        </button> 
</div> 
{% endfor %} 

此代碼不能正常工作,頁面重載應用了所有更改後,但是。

+0

這是什麼''this''?你從哪裏打電話? –

+0

您可以請發佈整個標記。包括兄弟姐妹.. – Vasimkhan

+0

@Vasimkhan我發佈了代碼 – user3793667

回答

1

假設setCoverObject是一個事件處理程序,您需要將AJAX回調綁定到this值。所以:

success: function (data) { 
    ... 
}.bind(this) 

如果它不是一個事件處理程序,然後找到您的按鈕元素並將回調綁定到它。例如:

var button = $("#id-of-your-button").get(0) 
success: function (data) { 
    ... 
}.bind(button) 

還設置你不應該使用該按鈕的value屬性應該設置按鈕內容的按鈕上的文字,所以不是

some_button.attr('value', 'Set cover') 

使用:

some_button.text('Set cover') 
0

我給某個按鈕添加了id,並且使用了,而不是改變其他按鈕。

success: function (data) { 
      $('.set_as_cover').not('#cover_button_'+objId).each(function(){ 
       $(this).prop('disabled', false); 
       $(this).text('Set cover'); 
      }); 
      $('#cover_button_'+objId).prop('disabled', true); 
      $('#cover_button_'+objId).text('Cover'); 
     }