2014-01-19 100 views
0

我使用jQuery動態地將「禁用」屬性動態添加到textbox輸入字段。但是看看生成的HTML,在我添加了'disabled'屬性的textbox輸入字段中看不到它。動態添加屬性在html元素中不可見

因爲它沒有被添加到它,我的其他jQuery函數永遠不會進入。

這裏是我的代碼:

這種情況發生了一些地方在doc加載事件:

$('.testGroup :input').prop('disabled', true)

此功能顯示工具提示,當您clickhover在禁用輸入:

$('input:disabled').after(function (e) { 
     debugger; 
     d = $("<div>"); 
     i = $(this); 
     d.css({ 
      height: i.outerHeight(), 
      width: i.outerWidth(), 
      position: "absolute", 
     }) 
     d.css(i.offset()); 
     d.attr("title", i.attr("title")); 
     d.tooltip(); 
     return d; 
    }); 

我已經使用/試過prop()attr(),但他們中沒有人進入我的after()功能。根據Paul Rosania我應該使用prop()

是否有另一種方法來實現這一目標?

編輯jsFiddle

+2

你可以發佈jsfiddle嗎? – kapa

+0

當然,請參閱我的問題更新。無法獲得動態禁用輸入來處理jsFiddle'('#test')。prop('disabled',true);'。 – Quoter

+1

change('#test')。prop('disabled',true);到$('#test')。prop('disabled',true); –

回答

1

的問題是,你的代碼,增加了工具提示只運行一次後DOM已準備就緒。 您需要爲您禁用的每個元素調用它。

一個簡單的解決辦法是寫一個方法爲您提示:

function AddToolTip() { 
    d = $("<div>"); 
    i = $(this); 
    d.css({ 
     height: i.outerHeight(), 
     width: i.outerWidth(), 
     position: "absolute", 
    }) 
    d.css(i.offset()); 
    d.attr("title", i.attr("title")); 
    d.tooltip(); 
    return d; 
} 

然後,使用此方法的提示適用於被禁止在DOM準備的元素

$('input:disabled, button:disabled').after(AddToolTip);

在禁用輸入元素時,請再次調用該方法

$('#test').prop('disabled', true).after(AddToolTip);

Fiddle

+0

工作就像一個魅力,謝謝! – Quoter