2012-10-22 23 views
0

後,我看不出這不能工作,但這裏是我的問題......禁用可選擇的孩子初始化

我有一系列的頁面上可選擇的羣體 - 每個人在一張桌子和一個排td內的div是可選項。並非所有的td都包含一個可選項 - 這是通過「忽略」類的存在來表示的。一個燈箱會打開,然後需要將其中一個可選組中的多個孩子作爲目標,並在燈箱關閉後禁用他們在組內進行選擇。

我有這樣的HTML(它的一個片段,但準確):

<tr id='row_17' data-booking_row='a room' data-booking_row_id='17'> 
    <td class='booking_cell green'> 
     <div data-date='2012-10-22' class='room_cell selectable'> 
      <div class='price ignore' style='display:block;'>&pound;5</div> 
     </div> 
    </td> 
    <td class='booking_cell amber ignore'> 
     <div data-date='2012-10-23' class='room_cell ignore'> 
      <div class='price ignore' style='display:block;'>&pound;5</div> 
     </div> 
    </td> 
    <td class='booking_cell amber ignore'> 
     <div data-date='2012-10-24' class='room_cell ignore'> 
      <div class='price ignore' style='display:block;'>&pound;2</div> 
     </div> 
    </td> 
</tr> 

可選擇的是由這一段代碼在頁面包含上述HTML底部開始:

$(function() { 
    $('#row_17').selectable({ 
     filter: 'div:not(.ignore)' 
    }); 
}); 

然後,從燈箱,我正在做以下嘗試和禁用相關selectables選擇的兒童:

parent.$('#row_17 td div[data-date=2012-10-22]').removeClass('selectable'); 
parent.$('#row_17 td div[data-date=2012-10-22]').addClass('ignore'); 
parent.$('#row_17 td div[data-date=2012-10-22]').removeClass('green'); 
parent.$('#row_17 td div[data-date=2012-10-22]').addClass('amber'); 
parent.$('#row_17 td div[data-date=2012-10-22]').removeClass('ui-selected'); 
parent.$('#row_17 td div[data-date=2012-10-22]').removeClass('ui-selectee'); 

(以下簡稱「琥珀」類的添加和的「綠色」除去純粹改變顏色)

他們仍然選擇不管,顏色也發生變化,他們應該和類都被添加和帶走因爲他們應該如果我檢查它,但你仍然可以選擇它。

我曾試圖在去年塊的末尾添加這樣的:

parent.$('#row_17 td div[data-date=2012-10-22]').selectable('disable'); 

但這種錯誤,並告訴我:「不能叫上選擇之前的方法來初始化;試圖調用方法‘禁用’」

有沒有人有任何想法?我真的爲新的JQuery UI站點缺乏上下文和示例而苦惱。

謝謝。

回答

0

嘗試使用.ready(),等待文檔準備就緒,並且加載DOM並且可以進行操作。

$(document).ready(function() { 
    parent.$('#row_17 td div[data-date=2012-10-22]').selectable('disable'); 
}); 
+0

的DOM *是*準備好了,代碼的頁面的底部(遇到*之後*瀏覽器裝配了DOM),並且,包在'$(document).ready()'等價。 –

+0

是的,它在底部,所以它肯定是初始化的。如果有幫助,我注意到我所做的,沒有最後一行,阻止你在**拖動中選擇子**,但是你仍然可以點擊它們來選擇它們。這是否意味着什麼? –

0

試試這個

parent.$('#row_17').selectable('option','cancel','td div[data-date=2012-10-22]'); 
+0

剛剛嘗試過,但它仍然允許您單獨單擊它們並選擇它們,但如果您將它們拖入其中,則它們將不會選擇它們。不過謝謝。 –

0
$(document).ready(function() { 
    parent.$('#row_17 td [div*="2012-10-22"').selectable('disable'); 
});