2012-04-17 36 views
0

在下面的代碼分支中,當更改「my_theme」選擇菜單時,我正在對服務器進行幾次$ get調用以檢索所選內容主題的默認顏色選項和預覽圖像。在此過程中,爲避免用戶在加載顏色之前單擊「應用更改」按鈕,我將該按鈕設置爲禁用,然後在操作完成後將其重置。

但是,在一次安裝中,某些顯然失敗的按鈕將保持禁用狀態(即使get操作沒有明顯錯誤)。

我怎樣才能更好地構造這個以完成獲取完成後重命名提交按鈕?

$('#my_theme').change 
(
    function() 
    { 
     $("#largePreview").hide(); 
     var myImage = $('#my_theme :selected').val(); 
     var thisOption = $(this); 
     $('.selectedImage img').attr('src','<?php echo get_bloginfo('template_directory') ?>/styles/'+myImage+'/screenshot.jpg'); 
     $('.selectedImage img').attr('alt',myImage); 

     try{ 
      $('button.save').attr('disabled','disabled'); 
      $.get('<?php echo get_bloginfo('template_directory') ?>/color.php', {theme: myImage, spot: '1'}, function(data){doColor('#my_theme_header_color', data);}); 
      $.get('<?php echo get_bloginfo('template_directory') ?>/color.php', {theme: myImage, spot: '2'}, function(data){doColor('#my_theme_sidebar_color', data);}); 
      $.get('<?php echo get_bloginfo('template_directory') ?>/color.php', {theme: myImage, spot: '3'}, function(data){doColor('#my_theme_spot_color_alt', data);}); 
      $.get('<?php echo get_bloginfo('template_directory') ?>/color.php', {theme: myImage, spot: '4'}, function(data){doColor('#my_theme_spot_color_alt2', data);}); 
      $.get('<?php echo get_bloginfo('template_directory') ?>/color.php', {theme: myImage, spot: '5'}, function(data){doColor('#my_bg_attach_color', data);}); 
     } 
     catch(e){ 
      $('button.save').attr('disabled',''); 
     } 
     $.get('<?php echo get_bloginfo('template_directory') ?>/get-image.php', {template: myImage, action: 'background'}, function(data){ 
      if(data){$('#currentBackgroundImage').attr('src','<?php echo get_bloginfo('template_directory') ?>/styles/'+myImage+'/background.png');} 
      else{$('#currentBackgroundImage').attr('src','<?php echo get_bloginfo('template_directory') ?>/background-missing.png');} 
     }); 

     $.get('<?php echo get_bloginfo('template_directory') ?>/get-image.php', {template: myImage, action: 'header'}, function(data){ 
      if(data){$('#currentHeaderImage').attr('src','<?php echo get_bloginfo('template_directory') ?>/styles/'+myImage+'/header.png');} 
      else{$('#currentHeaderImage').attr('src','<?php echo get_bloginfo('template_directory') ?>/header-missing.png');} 

      $('button.save').attr('disabled',''); 

     }); 

}); 

回答

2

嘗試要麼屬性設置爲false:

$('button.save').attr('disabled', false); 

或刪除它:

$('button.save').removeAttr('disabled'); 
+0

+1感謝您的多種選擇。 – RegEdit 2012-04-18 12:15:58

2

嘗試$('button.save').removeAttr('disabled');

「禁用」 是一個布爾屬性,因此它要麼有(true)或者它不是(假)。

+0

+1感謝布爾ATTR一角! – RegEdit 2012-04-18 12:15:34

0

你可以利用http://api.jquery.com/jQuery.when/所以,你可以做很多Ajax請求,當他們都做執行你想要什麼。

$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2){ 
    /* a1 and a2 are arguments resolved for the 
     page1 and page2 ajax requests, respectively */ 
    var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */ 
    if (/Whip It/.test(jqXHR.responseText)) { 
     alert("First page has 'Whip It' somewhere."); 
    } 
}); 
0

使用.prop()。

.attr()是做它的老方法。 $('button.save')。prop(「disabled」,false);

http://api.jquery.com/prop/#prop2

爲了區分時使用的道具或ATTR,認爲這一招:

<tag anything=value> is an attr 
<tag value> is a prop 

例如

<input disabled> 
<input type="checkbox" checked> 
<option selected>