删除a:悬停在javascript中

时间:2012-01-24 16:25:04

标签: javascript jquery removeclass

我有以下javascript代码:

$('#s2 a').click(function(){
    var cB = $(this);
    var f = parseInt(cB.attr('data-f'));
    var r = parseInt(cB.attr('data-r'));
    var c = parseInt(cB.attr('data-c'));
    if (pA == false && !isClickAllowed(f,r,c)) {
        return false;
    }
    // more stuff comes here 
}

这使链接无法点击。这一切都有效。我还想删除悬停效果。这个的CSS代码是:

.pc a:hover {
    background-color: #FFF;

我认为删除该类会像cB.removeClass('pc');那样做,但这不起作用。

有关如何执行此操作的任何建议吗?

感谢您的时间

- 编辑 -

嗯,我想我明白为什么它不起作用了。在文档的顶部我有这个:

$(document).ready(function() {
    setScale();
    $(window).resize(setScale);
    if (!('ontouchstart' in document)) {
        $('body').addClass('pc');
    } 
        more code here

当在PC上打开页面而不是触摸设备(例如iPad)时,这为所有链接设置.pc a:hover。我需要禁用此电脑悬停仅在链接上不可点击,如:

if (pA == false && !isClickAllowed(f,r,c)) {
        return false;
    }

希望这有帮助!

6 个答案:

答案 0 :(得分:6)

cB是未指明CSS类的引用的锚,父类将具有类pc以使其工作。 cB.parent().removeClass('pc');会这样做。

- 编辑 -

根据下面的博学评论,似乎cb.parents('.pc').removeClass('pc')cb.parents().removeClass('pc')(我没有基准,看看哪个更快)将是全面的解决方案。

对詹姆斯,安东尼和塔德克有好处!

- 编辑2 -

在更新问题后,我建议您在链接中添加另一个类,即clickable,然后您的CSS就会变为:

.pc a.clickable:hover {
    background-color: #FFF;

您可以删除那些您不想显示突出显示的链接上的clickable类。更好的做法可能是简单地用原始文本替换禁用的链接,或者用标识类替换为跨度的链接,例如disabled_link如果您想要稍后启用它们的话。{/ p>

答案 1 :(得分:3)

虽然没有提供HTML,但基于代码,cB似乎不是具有pc类的元素,而是cB的祖先。您需要从中删除该类。

如果直接父级是pc类的唯一祖先,则可以执行以下操作:

cB.parent().removeClass("pc")

如果直接父级以外的一个祖先只有pc的类而父级没有,则可以执行以下操作:

cB.closest(".pc").removeClass("pc")

如果多个祖先拥有pc类,您可以使用以下内容:

cB.parents(".pc").removeClass("pc")

最后,如果a中存在多个.pc标记,则您无法使用删除该类的方法,因为这会影响a内的所有.pc标记

答案 2 :(得分:0)

<p id="example">This is an example.</p> 

<script>
  document.getElementById('example').style.borderWidth = '4px';
</script>

请注意,borderWidth与border-width不同。这可以用于其他样式。根据经验,拿走破折号并将第二个单词的第一个字母写成大写字母。如果它不起作用,谷歌吧。

答案 3 :(得分:0)

cB.removeClass('pc')确实应该删除aclass。确保您的css在所有情况下都能正常运行。同时尝试定位父

答案 4 :(得分:0)

我会在disabled规则之后的CSS中添加一个:hover类,并用禁用的样式覆盖它,这可能是也可能不是默认样式。然后,您可以这样做:

cB.addClass('disabled');

现有解决方案不起作用的原因是因为当父类具有类时,您将从元素中删除该类。

答案 5 :(得分:0)

由于您的CSS问题已经解决,我想指出另一项改进: 我看到你使用cB.attr('data-f')来存储一些数据,但是attr只应该用于有效的HTML属性。您应该考虑使用jQuery数据方法,该方法是为了将非属性数据存储到元素中而创建的 http://api.jquery.com/jQuery.data/