2014-02-10 36 views
0

正確抽象,我怎樣才能在多個腳本中獲取jQuery對話框的'標題'選項?jQuery UI 1.7 - 在多個腳本中獲取標題選項

例如,下面我有2個腳本,其中第一返回var當成一個字符串,其中其他不變量作爲字符串返回:

<script> 
$(function() { 

    $(".scheduleDiv").dialog({ 
     autoOpen: false, 
     height: 300, 
     width: 350, 
     modal: true, 
     Cancel: function() { 
      $(this).dialog("close"); 
     } 
    }); 

    $(".device-modal") 
    .click(function() { 
     $(".scheduleDiv").dialog({"title": $(this).attr('title')}); 
     alert($(".scheduleDiv").dialog('option', 'title')); 
     var single = $(this).dialog('option', 'title');   //works as expected 
     $(".scheduleDiv").dialog("open"); 
     return false; 
    }); 
}); 
</script> 

<script> 
$(document).ready(function() { 
    $('.locks').hide(); 
    $('.device_groups').hide(); 

    var single = $(this).dialog('option', 'title');    //is undefined... 

    if (single == "Add Single Lock") { 
     $('.locks').show(); 
     //$('.locks select').removeAttr('disabled'); 
    } 
    else { 
     $('.device_groups').show(); 
     //$('.device_groups select').removeAttr('disabled'); 
    } 

}); 
</script> 

所以,我怎麼能設置「單」在第二個腳本中以字符串形式返回標題?

非常感謝

回答

0

你的this方面很可能不正確。當您處理$(document).ready()事件時,this是該文檔。您需要手動抓住你的對話窗口,然後拿到冠軍:

$('.scheduleDiv').dialog('option', 'title'); 

您使用的是拿到冠軍的代碼ondocumentready射擊,但你的初始化實際上並沒有設置標題。直到您點擊「deviceModal」,您纔會設置標題。此時,記錄標題的代碼不會被重新啓動,因爲文檔只加載一次。

+0

當_「。scheduleDiv」_用來代替_this_ – seanriordan08

+0

Working [Fiddle](http://jsfiddle.net/3K4bH/)時,我得到了相同的結果;你的代碼實際上並沒有給對話分配一個標題,這可能是你沒有從方法中獲得一個標題的原因。 – Bic

+0

除了不將標題分配給對話框外,還需要禁用替代(未選定)選項。 – seanriordan08