Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么jQuery代码可以在Firefox中工作,而不能在Chrome或Safari中工作?_Javascript_Jquery_Firefox_Webkit - Fatal编程技术网

Javascript 为什么jQuery代码可以在Firefox中工作,而不能在Chrome或Safari中工作?

Javascript 为什么jQuery代码可以在Firefox中工作,而不能在Chrome或Safari中工作?,javascript,jquery,firefox,webkit,Javascript,Jquery,Firefox,Webkit,我正在使用jQuery突出显示(通过更改bg颜色)一些表单元格。我希望按钮(一个简单的锚)在单击时被赋予类名“selected”,并且我希望按钮下面的某些表格单元格高亮显示。再次单击同一按钮时,将取消选择并删除表格单元格中的高光。单击其他按钮时,它将删除其他高光并切换到新的相应高光 这一切在Firefox中都非常有效。当我在webkit浏览器中尝试它时,它不会。我不明白为什么,这让我发疯了!jQuery代码如下所示。您可以在以下位置查看该页面: 我感谢你的帮助 变化: id = $(this)

我正在使用jQuery突出显示(通过更改bg颜色)一些表单元格。我希望按钮(一个简单的锚)在单击时被赋予类名“selected”,并且我希望按钮下面的某些表格单元格高亮显示。再次单击同一按钮时,将取消选择并删除表格单元格中的高光。单击其他按钮时,它将删除其他高光并切换到新的相应高光

这一切在Firefox中都非常有效。当我在webkit浏览器中尝试它时,它不会。我不明白为什么,这让我发疯了!jQuery代码如下所示。您可以在以下位置查看该页面:

我感谢你的帮助

变化:

id = $(this).attr("id");
name = $("." + id);
致:

也就是说,用
var
声明变量,使其具有局部作用域。 如果没有
var
,变量具有全局范围,并且与某些内容冲突


它现在可以在Chrome/Safari中使用:

解决问题的一些方法:

name
已经是jQuery对象。将此行更改为:

name.removeClass('highlight');

另外,不是
而是返回false,我建议使用
event.preventDefault()
,如下所示:

$('.press').click(function(event) {
    // ...
    event.preventDefault();
});

显然,
name
正被chrome用于其他目的。如果您的
name
变量不是全局变量,即
var name
而不仅仅是
name
,那么它可能会起作用。尽管我只想使用不同的变量名。

这是“not(name)”实现了您真正的意思,还是希望使用您创建的样式选择器?此外,变量“name”已经是一个jQuery对象,但您稍后将其包装为一个新的jQuery对象。这不是问题的一部分,但应该缓存jQuery对象。例如,“var$this=$(this)”在开头声明一次,之后可以使用“$this”。考虑对在给定代码中多次创建的jQuery对象执行相同的操作。谢谢您的快速响应。是用“名字”把我搞砸了。我感谢你的帮助!你的第一点实际上不会有什么不同。你的第二点是很好的建议,但不是问题的原因。
name.removeClass('highlight');
name.addClass('highlight');
$('.press').click(function(event) {
    // ...
    event.preventDefault();
});