2010-05-09 60 views
5

我想用jquery創建一個按鈕。 我用下面的代碼IE 7不喜歡jquery('<button/>').attr('type','button')

jquery('<button/>', {type:'button'}).text(name) 

然而這部作品在Safari瀏覽器,IE8 FF但不是IE7

我試圖使用attr函數:

jquery('<button/>').attr('type','button').text(name) 

這也不行。

任何想法會有什麼作用?我想,如果我不指定類型,將默認按鈕,但我寧願做

感謝您的幫助

+0

'

+4

實際上[button](http://www.w3.org/TR/html401/interact/forms.html#h-17.5)默認爲type = submit。 – Tgr 2010-05-09 19:56:39

+2

按鈕確實有一個type屬性,type = button,type = submit和type = reset – salmane 2010-05-09 20:02:43

回答

5

嘗試這種情況:

var button = $('<button type="button"/>'); 

現在,因爲它發生,對於按鈕的默認類型爲「鍵」無論如何在IE(7至少,不知道標準的模式8)。但是,上述應該工作。我前幾天碰到了這個。 IE允許你在創建元素時在元素語法中提供類型,看起來jQuery幾乎將它的參數直接傳遞給低級DOM API。

哦,它也可以在FF和Chrome中正常工作。


編輯 —以及每年使什麼區別,是嗎?現在我無法使用jQuery 1.4.4或jQuery 1.5.x來爲我工作。好消息是,jQuery 1.6看起來像OP所希望的那樣工作:通過以更常見的jQuery方式設置「type」。

什麼確實似乎工作,但是,是直接調用元素上的「.setAttribute()」。因此:

var b = $('<button/>'); 
b[0].setAttribute('type', 'button'); 

拋出一個異常,它確實設置「類型」正確地歸因。 (這本身有點奇怪,因爲微軟明確地將「類型」記錄爲只讀)。1.6的變化似乎沿着相同的路線。以前,庫並沒有檢查「type」,並且會明確地禁止將其設置爲已經在DOM中的元素,但會繼續嘗試將其設置爲不在DOM中的元素的簡單屬性。現在,1.6代碼調用「.setAttribute()」來設置「type」,這對於我來說是未知的。

+0

它一定是我最終的東西,因爲我嘗試過,它仍然無法正常工作。在我看來,IE7,IE8,FF和Safari的默認類型=「按鈕」也許...我可能會讓它不被聲明 – salmane 2010-05-09 21:30:14

+0

不,這絕對是不正確的:所有的「好」瀏覽器遵循W3C規範,其中規定默認類型是「提交」。 (那是在「標準模式」;如果你在怪癖模式下,那麼(A)我不知道他們做了什麼,(B)走出怪癖模式。) – Pointy 2010-05-09 22:18:12

+0

此外,這絕對適用於IE。當你說「它仍然不起作用」時,你的意思是什麼?你有Javascript錯誤嗎? – Pointy 2010-05-09 22:19:04

1

你試過:

var $btn = $("<button>Button Text</button>"); 

然後你就可以追加在此隨地你的文件。通常,您可以用這種方式使用字符串文字來創建幾乎任何DOM元素。

+0

毫無疑問,我的麻煩是按鈕的「類型」。 只要我指定IE 7拒絕它 – salmane 2010-05-09 19:55:38

+0

你當然可以這樣做:var $ btn = $(「」); – BradBrening 2010-05-09 20:06:00

+0

我也試過,但沒有奏效。一些如何,只要我介紹的類型屬性IE7不喜歡....可以這是一個jQuery 1.4的錯誤? – salmane 2010-05-09 20:07:02

-1

我想你想用這個$(「:提交」)

它發現任何東西,作爲一個提交按鈕。 參見:http://api.jquery.com/submit-selector/

+1

上面的文本是節點創建命令,而不是DOM選擇器命令。您可以將新節點追加到DOM。 – artur02 2011-05-10 09:53:36