0

当您第二次单击复选框时,我试图删除“活动”类,就像用户添加 pin 时 Pinterest 对 Twitter/Facebook 复选框所做的一样: 在此处输入图像描述

单击时添加“活动”类很容易。但是,我不知道添加后如何将其删除。我试过这个,但没有奏效:

$(".add_link_twitter.active").click(function(e) {  
      $(this).removeClass(activePostTwitter); 
    });

我有两个问题:

  1. 如何在第二次单击复选框时删除“活动”css类?
  2. 选中 Twitter 复选框时如何禁用“.add_link_twitter:hover”?

提前致谢!

这是jQuery:

var postTwitter = ".add_link_twitter"; 
var activePostTwitter = "active"; 
$(postTwitter).click(function(e) {  
  $(this).addClass(activePostTwitter); 
});

这是html:

<label class="add_link_twitter">
<input type="checkbox" name="publish_to_twitter" class="publish_to_twitter"><span>Share on Twitter</span>
</label>

这是CSS:

.add_link_twitter{
    position:absolute;
    left:15px;
    bottom:16px;
    color: #a19486;
    border: 2px solid transparent;
    border-color: #F0EDE8;
    border-radius: 4px;
    font-size: 13px;
    font-weight: bold;
    cursor: pointer;
    padding: 7px;
    padding-top: 5px;
    padding-bottom: 5px;
}

.active {
    border-color: #468BD0;
    color: #468BD0;
    background-color: whiteSmoke;
}

.add_link_twitter:hover
{
    color: #A19486;
    border: 2px solid transparent;
    border-color: #C2B1A2;
    border-radius: 4px;
    background-color: white;
    padding: 7px;
    padding-top: 5px;
    padding-bottom: 5px;
}
4

2 回答 2

8

代替

$(postTwitter).click(function(e) {  
  $(this).addClass(activePostTwitter); 
});

采用

$(postTwitter).click(function(e) {  
  $(this).toggleClass(activePostTwitter); 
});

编辑:

该事件每次点击触发两次,可能是因为事件传播。要解决此问题,请将处理程序分配给input并让它更改其父类的类:

$(postTwitter + " input").click(function(e) {
    $(this).parent().toggleClass(activePostTwitter);
});

确认 jsfiddle:http: //jsfiddle.net/bpfqB/

于 2012-08-24T20:28:48.077 回答
1

这应该适用于您的两个问题:

$(function() {
    "use strict";
    var $postTwitter = $("label.add_link_twitter");

    $postTwitter.find("input:checkbox").click(function() {
        $(this).parent().toggleClass("active");
        if($("input.publish_to_twitter").is(":checked")) {
            $(this).parent().removeClass("hover");
        }
    });

    $postTwitter.hover(
        function() {
            if($("input.publish_to_twitter").is(":checked")) {
                return;
            }

            $(this).addClass("hover");
        },
        function() {
            $(this).removeClass("hover");
        });
});

但是,您需要对 CSS 进行一些更改,您必须使用 jQuery 进行悬停(跳过 CSS 悬停)。

演示

于 2012-08-24T20:56:07.103 回答