【问题标题】:Jquery how to append and remove on a div click eventJquery如何在div点击事件上追加和删除
【发布时间】:2010-11-09 14:24:08
【问题描述】:

我是使用 jquery 的新手,想知道如何使用 click 事件从 div 中附加和删除 ID 并附加到 html。在下面的代码中,我已经能够通过单击 div 来附加 ID,但不知道如何删除。无论哪个 div 突出显示为黄色,都应该是附加的那些。再次单击 div 以删除突出显示也应该从 html 中删除 ID。提前感谢您的帮助。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
  $('div.click').click(function() {
    var bg = $(this).css('backgroundColor');
    $(this).css({backgroundColor: bg == 'yellow' || bg == 'rgb(255, 204, 204)' ? 'transparent' : 'yellow'});
  });
});
$(function( ){
    $('#div1').bind('click', click);
    $('#div2').bind('click', click);
    $('#div3').bind('click', click);
});
function click(event){
    $('#p1').append(event.target.id + ",");
}

</script>
</head>
<body>
<div class="click" id="div1">click me</div>
<div class="click" id="div2">click me</div>
<div class="click" id="div3">click me</div>
<p id="p1"></p>
</div>
</body>
</html>

【问题讨论】:

    标签: jquery html click append


    【解决方案1】:

    我喜欢将其他功能与处理 ready 事件的一个单独的块分开。

    <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
    
    <script type="text/javascript">
        var divs = new Object();
    
        function click(event){
            var did=event.target.id;
    
            if($("#"+did).css('backgroundColor') == 'yellow')
                divs[did]=true;
            else
                divs[did]=false;
    
            AppendText();
        }
        function AppendText(){
           var txt="";
            for(var x in divs)
                if(divs[x]==true)
                  txt +=x+",";
    
            $('#p1').html(txt);
        }      
    </script>
    

    现在连接点击。

    <script type="text/javascript">
        $(document).ready(function() {
          $('div.click').click(function() {
            var bg = $(this).css('backgroundColor');
            $(this).css({backgroundColor: 
                    bg == 'yellow' || bg == 'rgb(255, 204, 204)' ? 
                  'transparent' : 'yellow'});
          });
            $('#div1').bind('click', divclick);
            $('#div2').bind('click', divclick);
            $('#div3').bind('click', divclick);
        });
    </script>
    

    【讨论】:

    • 感谢您的回复。在您的示例中,单击 div 以删除突出显示不会从 html 中删除 ID,但会阻止附加另一个 ID。你能说明如何删除吗?
    【解决方案2】:

    使用 CSS 类而不是直接更改样式会更简洁一些。这样您就可以利用方便的toggleClass 功能来打开和关闭突出显示。也很容易测试一个 div 是否突出显示:div.is(".highlighted")div.hasClass("highlighted") 会告诉你。

    <script type="text/javascript">
      $(document).ready(function() {
        $('div.click').click(function() {
          $(this).toggleClass('highlighted');
        });
      });
    
      $(function() {
        // Can use one CSS selector to find all three divs and bind them all at once.
        $('#div1, #div2, #div3').bind('click', click);
      });
    
      function click() {
        var p1 = $("#p1");
    
        if ($(this).is(".highlighted")) {
          p1.append(this.id + ",");
        }
        else {
          p1.text(p1.text().replace(this.id + ",", ""));
        }
      }
    
    </script>
    
    <style type="text/css">
      .highlighted {
        background: yellow;
      }
    </style>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多