使用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"
- jquery自动完成插件 – 获取工作 – fetchAll没有
- Rails不引人注目的javascript(UJS)ajax:在追加数据参数之前
- 即使其他加载的jQuery函数正在运行,自定义jQuery函数也无法在WordPress上运行
- jQuery的click()只能为DOM 0和通过jQuery注册的事件处理程序触发事件处理程序……?
- 使用jQuery是跨浏览器兼容性的保证吗?
- 谷歌图表:“未捕获(承诺)错误:未知标题类型:4.7278”错误
- javascript:隐藏密钥的内容
- Treegrid 9.3.11未加载chrome 61
- Mozilla firefox无法使用window.onbeforeunload