1

当满足第一个 if 条件时,其中的 if 条件总是返回 true。我知道这一点,因为每次满足第一个 if 条件时,它都会附加相同的 div。我的JS知识有限;这可能是我想念的明显东西。但是,在我看来,在满足并执行了第二个 if 语句之后,它的条件不应该再次满足。有谁知道是什么原因造成的?任何帮助,将不胜感激。

if (portfolioImg.attr('src') == 'image.png') 
{
    if (zoomImgHolder.width() != '300px') 
    {
        zoomImgHolder.append('<div id="myContent"></div>');
        zoomImgHolder.css(
        {
            'width' : '300px',
            'height' : '120px'
        });

        swfobject.embedSWF(
            "swfobject/test.swf", 
            "myContent", 
            "300", 
            "120", 
            "9.0.0", 
            "expressInstall.swf");

        zoomImgHolder.vAlign();
    } 
    else 
    {
        $('#myContent').css(
        {
            'visibilty' : 'visible'
        });
    }
}
4

3 回答 3

6

正如文档所解释的:

.css(width)和之间的区别在于.width()后者返回一个无单位的像素值(例如,400),而前者返回一个具有完整单位的值(例如,400px)。

.width()总是返回一个数字,并且<any number>永远不会相等300px

于 2013-03-14T23:37:13.697 回答
2

jQuery 中的 width() 函数返回一个整数值。因此,它永远不会等于字符串“300px”。

只需稍微修改您的代码:

if (zoomImgHolder.width() != 300)
于 2013-03-14T23:36:53.937 回答
2

.width()返回一个数字,而不是字符串:

> 300 == '300px'
false

只需将其与300

if (zoomImgHolder.width() != 300) {
于 2013-03-14T23:36:56.077 回答