【问题标题】:How do I dynamically change div's colors after being created by jquery?由jquery创建后如何动态更改div的颜色?
【发布时间】:2013-06-07 16:10:04
【问题描述】:

我最初尝试使用 jQuery 的 .css() 来执行此任务,但失败了。我尝试了几种方法,但都失败了。我更愿意学习如何使用 jquery 的库来执行这个功能。 jQuery UI 用于可拖动和调整大小的 UI。我的

我当前的代码:

<div id="p1"></div>

<link rel="stylesheet" href="script\jquery-ui-1.10.3.smoothness\css\smoothness\jquery-ui-1.10.3.custom.min.css" />
<script src="script/jquery-1.10.1.min.js"></script>
<script src="script/jquery-ui-1.10.3/ui/jquery-ui.js"></script>

<link rel="stylesheet" type="text/css" href="style/style.css">
<script type="text/javascript">
counter = 0;
$(function() {        
    $(document).on("click",'#addNewCo',function(e){
        e.preventDefault();
        var newCo = $('<div class="note" id="note'+counter+'" onclick="changecolor("note'+counter+'","EB0955")">note</div>').draggable({ scroll: true, scrollSpeed: 100 }).resizable();
        $('#area').append(newCo);
    });
});
function changecolor(id,color) {
    document.getElementById(id).style.backgroundColor = '#'+color;
}
</script>
<a id="addNewCo" href="javascript:void(0);"><button>New Note</button></a>
<div id="area"></div>

【问题讨论】:

  • 这绝对与引号内引号内的所有引号有关。 :)
  • JQuery 并不总是比 JavaScript 更好,JS 在创建元素和赋予它们样式方面要容易得多。 var div = document.createElement("div"); div.style.color = "#CCCCCC";
  • 请不要在您的问题标题中添加“[SOLVED]”。如果您的问题已被回答,请单击它旁边的复选标记以将其标记为已接受的答案。

标签: javascript jquery html colors


【解决方案1】:

不要对新元素使用内联 JavaScript,使用 .on() 进行委托,就像在代码的其他部分中所做的那样。试试:

$(function () {
    $(document).on("click", '#addNewCo', function (e) {
        e.preventDefault();
        var newCo = $('<div class="note" id="note' + counter + '")">note</div>').draggable({
            scroll: true,
            scrollSpeed: 100
        }).resizable();
        $('#area').append(newCo);
        counter++;
    });
    $(document).on("click", '.note', function () {
        changecolor($(this).attr('id'), 'EB0955');
    });
});

jsFiddle example

您还忘记增加您的计数器。您还可以将 jQuery 用于您的第二个功能:

function changecolor(id, color) {
    $('#'+id).css('backgroundColor', '#' + color);
}

【讨论】:

    【解决方案2】:

    你可以的

    $(function() {        
    $(document).on("click",'#addNewCo',function(e){
        e.preventDefault();
        var newCo = $('<div class="note">note</div>').draggable({ scroll: true, scrollSpeed: 100 }).resizable();
        $('#area').append(newCo);
    });
    $("#area").on("click",".note",function(){
         $(this).css("background","#EB0955");
    });
    });    
    

    http://jsfiddle.net/8qXP3/

    【讨论】:

      【解决方案3】:

      这是另一个解决方案:http://jsfiddle.net/zbPaU/1/

      此解决方案在您创建元素时调用绑定函数。

      $(function() {   
      counter = 0;
      $('#addNewCo').click(function(){
          var newCo = $('<div class="note" id="note'+counter+'" >note</div>');
          $('#area').append(newCo);
          nbind('#note'+counter);
          counter += 1;
          return false;
      });
      function changecolor(obj, color) {
          var colour = "#"+color;
          obj.css("background", colour);
      }
      function nbind(arg) {
          $(arg).bind('click', function() {
              changecolor($(this), "EB0955");
          });   
      }
      });
      

      【讨论】:

        【解决方案4】:

        试试这个,也许会有帮助:

        HTML:

        <a id="addNewCo" href="javascript:void(0);"><button>New Note</button></a>
        <div id="area"></div>
        

        JS:

        counter = 0;
        $('#addNewCo').click(function(e) {
            e.preventDefault();
            var newCo = $('<div />', {
                            class: 'note',
                            id: 'note' + counter,
                            click: function() {
                                $(this).css('background', '#EB0955');
                            }
                        });
            newCo.draggable({ scroll: true, scrollSpeed: 100 }).resizable();
        
            $('#area').append(newCo);
        });
        

        CSS:(我用它来知道笔记是什么时候创建的,因为我没有你的风格)

        .note {
            background: yellow;
            width: 50px;
            height: 50px;
        }
        

        这是fiddle。

        【讨论】:

          猜你喜欢
          • 2011-08-12
          • 2012-04-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多