正如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