2011-03-22 64 views
0

創建的元素後,我有一個div添加CSS類從JS腳本

<div id="form"/> 

有些JS從這個div建立一種形式。

結果看起來像

<div id="form"> 
    <fieldset> 
      ..inputs 
    </fieldset> 
    <fieldset> 
      ..inputs 
    </fieldset> 
    <fieldset> 
      ..inputs 
    </fieldset> 
</div> 

一旦形式已經建立起來,我需要運行此腳本

$(":input","fieldset:eq(2)").addClass("readonly-form"); 
$(":input","fieldset:eq(2)").removeClass("txt_textarea"); 

的問題是,當我把後面這些腳本代碼被建立表單,該字段集尚未建立。

我無法添加附加到JS代碼,這是建立窗體的字段集的類。

有沒有什麼方法可以等到表單建立起來然後添加和刪除css?

這不是工作

$(function(){ 
     var form = new Form("@Model.Name"); 
     form.AdditionalConfigUrlParams += "isshow=uloha" 
     form.Create(@Html.Raw(Model.Data)); 

     $(":input","fieldset:eq(2)").addClass("readonly-form"); 
     $(":input","fieldset:eq(2)").removeClass("dhxlist_txt_textarea"); 

    }); 
+0

我們可以看到積木和你試過的請 – mcgrailm 2011-03-22 12:39:21

回答

0

我認爲你可以使用

$(document).ready(function(){ 
    $(":input","fieldset:eq(2)").addClass("readonly-form"); 
    $(":input","fieldset:eq(2)").removeClass("txt_textarea"); 
}); 
+0

這是行不通的 – user256034 2011-03-22 12:39:11

+0

我認爲問題出在您的選擇器,我建議看到其他答案,似乎我的答案不是100%正確 – 2011-03-22 13:01:34

0

你的jQuery選擇是不正確的。它應該是:

$(":input, fieldset:eq(2)").addClass("readonly-form");// removed quotes between selectors 
$(":input, fieldset:eq(2)").removeClass("txt_textarea");// same here 

此外,這將只會選擇最後一個字段集。

+0

隨着您的修改,選擇器停止工作,因爲他們應該。 – user256034 2011-03-22 13:17:19

+0

那麼,他們怎麼可能在他們完全沒有工作時停止工作?看看這裏http://api.jquery.com/multiple-selector/也許如果你對你想要的東西更清楚些,你會得到一些更好的答案。 – 2011-03-22 13:42:47

+0

我有一個名爲firebuq的工具,那裏是一個JS控制檯,你聽說過嗎? :-)這些選擇器不應該是多個選擇器,而是一個上下文選擇器。 http://api.jquery.com/jQuery/ – user256034 2011-03-22 15:42:35

1

如果表單創建者有一個完整的事件,你可以把它放在那裏,否則你可能會想看看livequery plugin

$('form').livequery(function() { 
     $(":input","fieldset:eq(2)").addClass("readonly-form"); 
     $(":input","fieldset:eq(2)").removeClass("txt_textarea"); 
    } 
+0

由於1.5有一個新的功能,當http://api.jquery.com/jQuery.when/這個功能可以幫我嗎? – user256034 2011-03-22 13:02:08

+1

我沒有使用.when函數的經驗,你必須看看,但從我讀過的,我不認爲這會工作 – mcgrailm 2011-03-22 13:15:57

0

ü可以檢查表格已經創建或不

var formReady=form.create(@Html.Raw(Model.Data); // IDK what plugin you r using to create a form 
if(formReady) { 
$(":input,fieldset:eq(2)").addClass("readonly-form").removeClass("dhxlist_txt_textarea"); 
} 

或嘗試@mcgrailm方法