Javascript 每个,attr,还是这个?
我不确定是否需要这里的Javascript 每个,attr,还是这个?,javascript,jquery,html,this,attr,Javascript,Jquery,Html,This,Attr,我不确定是否需要这里的each()函数,或者是否可以通过this实现这一点。我试图根据if语句切换src属性。它可以工作,只是它将它们都切换到hifi1.jpg。如何使其将每个img的数据websrc值应用于自身 HTML: 更新:解决方案: jQuery(document).ready(function($) { if ( Modernizr.mq('(min-width:480px)') ) { $('.airsrc').each(function() {
each()
函数,或者是否可以通过this
实现这一点。我试图根据if
语句切换src属性。它可以工作,只是它将它们都切换到hifi1.jpg
。如何使其将每个img
的数据websrc
值应用于自身
HTML:
更新:解决方案:
jQuery(document).ready(function($) {
if ( Modernizr.mq('(min-width:480px)') ) {
$('.airsrc').each(function() {
var $this = $(this);
var src = $this.data('websrc');
if ( src != '' ) {
$this.attr('src', src);
}
});
}
});
这适用于支持自定义数据属性的浏览器,从我的测试中我发现这意味着FF/Chrome/Opera/Safari。也许是IE9。我认为getAttribute可以用于(较旧的)IE
它同时应用于这两个对象,因为您将它应用于整个jQuery对象airsrc
您必须使用$(this)
或者
按照上面的代码进行操作,将$(this)
分配给$this
,以缓存它,避免进一步查找。然后获取其数据并更改其属性
它同时应用于这两个对象,因为您将它应用于整个jQuery对象airsrc
您必须使用$(this)
或者
按照上面的代码进行操作,将
$(this)
分配给$this
,以缓存它,避免进一步查找。然后获取其数据并更改其属性。airrc.attr('src',src)代码>应该是$(this).attr('src',src)代码>一切都会很美好airsrc.attr('src',src)代码>应该是$(this).attr('src',src)代码>一切都会很精彩您需要在每个迭代中使用这个
,以获得该迭代的特定项,当然是用jQuery包装的。通过一些小的优化
jQuery(document).ready(function($) {
if (Modernizer.mq('(min-width:480px)')) {
$('.airsrc').each(function() {
var $this = $(this),
src = $(this).data('websrc');
$this.attr('src', src);
});
}
});
请注意,如果检查每个
之外的条件,则只需执行一次。另外,您可以通过将它赋给变量然后重用它来避免重新构造此
的jQuery。您将希望在每个函数中使用此
,以获得该迭代的特定项,当然是包装在jQuery中。通过一些小的优化
jQuery(document).ready(function($) {
if (Modernizer.mq('(min-width:480px)')) {
$('.airsrc').each(function() {
var $this = $(this),
src = $(this).data('websrc');
$this.attr('src', src);
});
}
});
请注意,如果检查每个
之外的条件,则只需执行一次。另外,您可以通过将jQuery分配给一个变量,然后重新使用它,从而避免重新构造该jQuery。您可以使用attr方法的一个功能使代码更短:
jQuery(function($) {
if ( Modernizr.mq('(min-width:480px)') ) {
$('.airsrc').attr('src', function() {
return $(this).data('websrc');
});
}
});
通过使用attr方法的一个功能,您可以使代码更短:
jQuery(function($) {
if ( Modernizr.mq('(min-width:480px)') ) {
$('.airsrc').attr('src', function() {
return $(this).data('websrc');
});
}
});
为什么你认为
$(this.data('websrc')
将返回图像的数据websrc
属性的值(该属性无论如何都是无效的,但这是另一回事)每个,attr
和这两个
都是完全正交的。代码出现错误的原因是因为您调用的是airrc.attr()
,而不是$(this.attr())
在each()循环中,它设置集合中所有元素的属性,而不是特定元素。@Delan:在HTML5和jQuery中有效。@Tomalak没有IE知识是件好事!;)(HTML5的很多东西都在IE9中工作,但不是更早)你为什么认为$(this.data('webrc')
将返回图像的数据websrc
属性的值(该属性无论如何都是无效的,但这是另一回事)每个,attr
和这两个
都是完全正交的。代码出现错误的原因是因为您调用的是airrc.attr()
,而不是$(this.attr())
在each()循环中,它设置集合中所有元素的属性,而不是特定元素。@Delan:在HTML5和jQuery中有效。@Tomalak没有IE知识是件好事!;)(HTML5的很多东西都在IE9中工作,但不是更早。)我自己做了一些小的优化。值得注意的是,让事情顺利进行……)@托马莱克-啊,我看到我删掉了
,因为我删掉了这些行。谢谢修理@托马拉克谢谢你!是的,越快越好!这个想法是基于手机、平板电脑或网络可能有两个或三个if语句。我想我还需要添加一个检查来确保数据websrc不为null。(上面添加的版本)我自己做了一些小的优化。值得注意的是,让事情顺利进行……)@托马莱克-啊,我看到我删掉了
,因为我删掉了这些行。谢谢修理@托马拉克谢谢你!是的,越快越好!这个想法是基于手机、平板电脑或网络可能有两个或三个if语句。我想我还需要添加一个检查来确保数据websrc不为null。(以上增加的版本)
jQuery(function($) {
if ( Modernizr.mq('(min-width:480px)') ) {
$('.airsrc').attr('src', function() {
return $(this).data('websrc');
});
}
});