任何人都可以告诉我为什么以下代码在firefox中运行但不是chrome?要在页面上对此进行测试,请在我的网站上查看此page并更改颜色。如果检测到视网膜显示器,想要交换图像......
这是我的代码:
jQuery('#pa_color').click(function(){
var monkey = jQuery('.jck-wt-images__image').attr('src')
if (monkey !== undefined) {
if (window.devicePixelRatio > 1) {
if (jQuery('.jck-wt-images__image').attr('src').contains('@2x')) {
}else{
jQuery('img.jck-wt-thumbnails__image, img.jck-wt-images__image').attr('src', function(index, attr) {
return attr.replace(/\.[^.]*$/, '@2x$&');
});
}
}
}
});
另外,我宁愿使用.change而不是.click(以便它可以在我的网站的移动版本上正常工作),但这根本不起作用......
答案 0 :(得分:1)
我认为这可能是问题 - 你在这里滥用了.contains()
方法 -
customjquery.js - 第8行
if (jQuery('.jck-wt-images__image').attr('src').contains('@2x')) {..}
你应该使用的是 -
if (jQuery('.jck-wt-images__image').attr('src').indexOf('@2x') >= 0) {..}
$.contains()
的真正含义 -
如果第二个参数提供的DOM元素是第一个参数提供的DOM元素的后代,
$.contains()
方法返回true,无论它是直接子节点还是嵌套更深。否则,它返回false。 仅支持元素节点; 如果第二个参数是文本或注释节点,$.contains()
将返回false。
<强> Source 强>