0

我有一个非常简单的字符串比较,但检查总是失败。我正在尝试加载<img>基于window宽度加载的不同图像。

$(document).ready(function() {
    var width = $(window).width();
    console.log(width);
    $('.slider-image').each(function() {
        resize_image( $(this), width );
    });
});

$(window).resize(function() {
    var width = $(window).width();
    $('.slider-image').each(function() {
        resize_image( $(this), width );
    });
});

function resize_image( image, width ) {
    console.log(width);
    if( width >= 480 && width < 768 ) {
        if(image.attr( 'src' ) != image.data( 'phone-src' ) ); {
            console.log( 'resize phone' );
            image.attr( 'src', image.data( 'phone-src' ) );
        }
    } else if ( width >= 768 && width < 960 ) {
        if(image.attr( 'src' ) != image.data( 'tablet-src' ) ); {
            console.log( 'resize tablet' );
            image.attr( 'src', image.data( 'tablet-src' ) );
        }
    } else if ( width >= 960 ) {
        if(image.attr( 'src' ) != image.data( 'desktop-src' ) ); {
            console.log( 'resize desktop' );
            image.attr( 'src', image.data( 'desktop-src' ) );
        }
    }
};

现在,我想要发生的是,don't replace the src, if the width remains within the borders. 我试图通过检查属性是否src已经具有该data属性来做到这一点,但是对其的字符串检查失败,因为它总是不相等,尽管 Chrome Inspector 中的两个属性都是相同的。为什么会这样?

顺便说一句,这两个字符串都是图像的 URL。

4

3 回答 3

1

为什么控制台日志后有额外的括号?

console.log( 'resize phone' ));

我检查了比较srcdata属性,它们匹配。除非您的图像没有用data-phone-src=""etc 标记,否则我认为该行会阻止设置 src。

于 2013-02-28T16:39:27.300 回答
0

您可以检查 src 是字符串原语还是 String()。

new String("hi") == new String("hi");  // false 
于 2013-02-28T16:11:56.067 回答
0

问题是我在每个 if 语句后面都有一个鬼鬼祟祟的分号......删除了那些并且它起作用了。

于 2013-03-11T22:49:16.313 回答