正如Sarfraz已經指出的,設置jquery選擇器對象的屬性的正確方法是使用attr("attrName", "attrVal")
。 setAttribute
不起作用的原因是值得解釋的,因爲我不止一次地碰到這一點:
當你使用jquery的選擇器語法時,它返回一個對象 - 在jquery中定義 - - 這實質上是選擇器匹配的所有元素的列表。無論它是否匹配一個元素(應始終是一個id選擇器)或多個元素,返回的對象是元素列表,而不是單個DOM對象(例如單個元素)。 setAttribute
是實際的HTMLElement
對象的方法。
這就是爲什麼
$("#frame")[0].setAttribute("width", "200");
作品,但
$("#frame").setAttribute("width", "200");
沒有。即使jQuery元素列表中的HTMLElement
對象所做的事情,jQuery元素也沒有該方法。
如果你想(無論什麼原因),使用原生HTMLElement
方法(或共同的元素您選擇退貨,如輸入等的方法),你可以使用jQuery的each()
方法,像這樣:
// Set all iframes to width of 250
$("iframe").each(
function(index, elem) {
elem.setAttribute("width","250");
}
);
each()
方法的回調可以傳遞兩個可選參數,第一個是選擇器列表中元素的索引,第二個是實際DOM元素,您可以調用本機DOM方法。
就像我說的,我非常沮喪地試圖找出如何使用本機方法多次使用jquery的選擇器結果,所以我希望這有助於清除爲什麼setAttribute()
不起作用,但本機方法一般來說,以及如何當你找不到相當的jquery時真正讓他們工作。
+1進行詳細說明:) – Sarfraz 2012-04-10 06:09:41
+1詳細信息^^ – Ben 2012-04-10 23:44:02