使用jquery更改iframe属性

我有类似的东西:

 

我想尝试使用jquery更改宽度和高度:

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

他们都没有工作

正如Sarfraz已经指出的那样,为jquery选择器对象设置属性的正确方法是使用attr("attrName", "attrVal")setAttribute不起作用的原因值得解释,因为我不止一次地反对这一点:

当您使用jquery的选择器语法时,它返回一个在jquery中定义的对象 – 它实际上是选择器匹配的所有元素的列表。 无论它是匹配一个元素(对于id选择器应该总是如此)还是多个,返回的对象是元素列表,从不是单个DOM对象(例如单个元素)。 setAttribute是实际HTMLElement对象的方法。

这就是为什么

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

工作,但

 $("#frame").setAttribute("width", "200"); 

才不是。 jquery元素没有该方法,即使其列表中的HTMLElement对象也是如此。

如果你想(无论出于什么原因)使用本机HTMLElement方法(或者你的选择器返回的元素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等价物时如何实际让它们工作。

关于什么:

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

要么

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

1)使用attr

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

2)使用DOM对象:

 $("#frame")[0].setAttribute("width", "50"); 
 $(document).ready( function() { var ysr = $('iframe').attr('src'); var nysr = ysr + "HD=1;rel=0;showinfo=0"; $('iframe').attr('src', nysr);}); 

编辑:看到你有id。 你能看看代码是否真的在运行吗? 就像被触发一样? 另外,尝试将allowfullscreen更改为allowfullscreen="true"