jquery脚本不能在chrome,safari和部分opera下工作,FF也行

时间:2011-12-06 18:02:36

标签: javascript jquery

今天我一直在这里寻求帮助script

成功完成了 - 再次感谢RKW。

我已将代码与我之前的代码合并,并且在FF下,everthing似乎运行良好。但是现在,我已经在Chrome,Safari(mac)和Opera下试用了它。 在Chrome和Safari中,脚本根本没有做任何事情(并且错误控制台保持清晰)。在opera下只有第一部分工作 - 添加了class active。

有什么建议吗?

$(document).ready(function(){
    $('input').focus(function() { /* add class active to parent div */
        $('div').removeClass('active');
        $(this).parent().parent().parent().addClass('active');
        $(this).closest("div").addClass('active');
    });

    $('input:radio').focus(function() { /* add class highlight to specified tds in one column */
        var num = 2;
        var col = $(this).closest('td').index() + 1;
        var row = $(this).closest('tr').index();

        var tds = $('td:nth-child(' + col + ')');
        tds = tds.slice(row,row+num);

        $('td').removeClass('highlight');
        tds.addClass('highlight');
    });
});

2 个答案:

答案 0 :(得分:1)

我不太确定你要对你的突出显示类做什么(如它应该如何突出显示),但是,为了正确地将类应用于div,你需要进行一些更改。 / p>

您需要使用:

,而不是使用.focus()
$('input').click(function()

$('input:radio').focus(function()

关于输入的一个注意事项:无线电是它必须使用jQuery的引擎来找到单选按钮,因为它不是标准的CSS2 / 3选择器。如果执行速度至关重要,请使用Thiago Santos'type ='radio'(因为CSS理解这一点,浏览器也是如此)。

我改变的另一件事是:

$('div').removeClass('active');

因为它没有在chrome中找到div,但是当我搞乱变换时在页面中做同样的事情,我发现所有使用.active类的元素并在设置$之前从所有元素中删除它们(this)带标签的元素。将其更改为:

$('.active').removeClass('active');

JSFiddle Example

我也注意到你正在使用CSS'nth-child,请注意,这不适用于IE8或更低版本(或怪异模式下的IE9)。

答案 1 :(得分:0)

在第二部分,尝试更改:

$("input:radio")...

$("input[type='radio']")...