微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查页面上是否存在src

如何解决检查页面上是否存在src

| 我有一个生成img标签的脚本,并且我想确保相同的img不会被制作两次。这是我尝试创建的脚本:
var included = 0;
var src = \"\";

jQuery.fn.checkCard = function() {
    if ($(\"#L_S_Inner\").find($(\'img\').attr(src))){
        included = 0;
    } else {
        included = 1;
    }
}
但是,它不起作用。不知道我在这里做错了什么... 它是这样构成的,这样我就可以在img创建脚本中检查变量'included \'。 编辑 添加了img创建脚本:
$(\'#Results a\').live(\'dblclick\',function() {
    src = $(this).attr(\'href\');
    getC = $(this).attr(\'class\');
    checkCard();

    if (!(checkCard)) {
            $(this).parent().append($(\'<img />\',{\'src\': src,\'class\': \'DCT \' + getC + \'\'}));
    }
});
    

解决方法

        这里有几个问题。首先,尽管有您的解释,但我认为不需要全局变量。这是丑陋且危险的做法-除非您有很好的理由不这样做,否则它应该是函数的返回值。 其次,正如@sosborn所说,该函数没有输入参数-
src
或者是另一个全局变量(您尚未显示),或者代码无法正常工作。 接下来,在
find
内应该有一个选择器,而不是jQuery对象,在
attr
内应该有一个属性名(因此是一个字符串
\"src\"
),而不是一个值(大概
src
包含类似
http://...
的东西)。 另外,为什么要使其成为jQuery插件? 从字面上看问题的解决方案,我会这样做:
var checkCard = function(src) {
    return !!($(\'#L_S_Inner img[src=\"\' + src + \'\"]\').length);
}
更好的解决方案是通过手动跟踪图像来记住创建的图像,速度更快。
var included = [];
// ...
// when you make an image
included[src] = true;
// ...
// when you want to know if it is there
if (included.hasOwnProperty(src)) // ...
更新:发布创建代码后,让我重写第二个解决方案:
var included = [];
$(\'#Results a\').live(\'dblclick\',function() {
    var src = $(this).attr(\'href\');
    var getC = $(this).attr(\'class\');

    if (!included.hasOwnProperty(src)) {
        $(this).parent().append($(\'<img />\',{\'src\': src,\'class\': \'DCT \' + getC + \'\'}));
        included[src] = true;
    }
});
顺便说一句,注意我加到您的内部变量中的11。声明变量,对健康有益。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。