2012-04-10 36 views
9

屬性我有一些像這樣:變化的iframe使用jQuery

 <iframe id="frame" width="200" height="150" 
    src="http://www.youtube.com/embed/GiZGEFBGgKU?rel=0& 
amp&iv_load_policy=3;autoplay=1" frameborder="0" allowfullscreen></iframe> 

而且我想改變的寬度和高度使用jquery我嘗試:

$("#frame").setAttribute("width", "50"); 
$("iframe").setAttribute("width", "31"); 

他們沒有工作

回答

24

正如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時真正讓他們工作。

+0

+1進行詳細說明:) – Sarfraz 2012-04-10 06:09:41

+1

+1詳細信息^^ – Ben 2012-04-10 23:44:02

2

1)使用attr

$("#frame").attr("width", "31"); 

2)使用DOM對象:

$("#frame")[0].setAttribute("width", "50"); 
+0

prop()dosent work – Ben 2012-04-10 05:18:02

+1

是不是'width'屬性而不是屬性?我可能是錯的,但我敢肯定你應該使用'attr()'... – elclanrs 2012-04-10 05:20:09

+0

@Even - 你確定它沒有調整,但Youtube的內容只是固定的大小? – jmort253 2012-04-10 05:20:17

3

什麼:

$('#frame').width(x) 

$('#frame').attr("width","50"); 
+0

+1的attr!我不想添加爲我自己的,所以我將它添加到你的。 – jmort253 2012-04-10 05:22:10

0

編輯:看到你確實有ID。你能看看代碼是否真的在運行嗎?就像它被觸發一樣?另外,嘗試更改allowfullscreenallowfullscreen="true"

0
$(document).ready(function() { 
var ysr = $('iframe').attr('src'); 
var nysr = ysr + "HD=1;rel=0;showinfo=0"; 
$('iframe').attr('src', nysr);});