【问题标题】:How to create click event on random "div" inside a main "div"?如何在主“div”内的随机“div”上创建点击事件?
【发布时间】:2014-10-21 16:38:23
【问题描述】:

我有一个主要的“Div”,点击后它会被拆分为 n X n 矩阵。每次点击它里面都有一个随机颜色的 div。直到这里都很好,现在我想在那个随机的彩色 div 上创建一个点击函数,该 div 目前位于整个主“div”内的任何位置..

$(window).load(function() {
  var no = 1,
    $m = $(".main_div"),
    size = 200;

  $m.live('click', function() {
    no++;
    var n = no * no,
      i, _size;
    $m.empty();
    for (i = 0; i < n; i++)
      $m.append($('<div title=' + i + '/>'));
    _size = size / no;
    $m.find('> div').css({
      width: _size,
      height: _size
    });

    var colors = ["#FFFFFF", "#CC00CC", "#CC6699", "#0099CC", "#FF99FF"];
    var rand = Math.floor(Math.random() * colors.length),
      randomTotalbox = Math.floor(Math.random() * $('.main_div div').length);
    $m.find("div:eq(" + randomTotalbox + ")").css("background-color", colors[rand]);
    var rand = Math.floor(Math.random() * colors.length);
  });
});
  .main_div {
    width: 200px;
    height: 200px;
    background-color: #9F0;
  }
  .main_div > div {
    float: left;
    box-shadow: 0 0 1px #000;
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main_div" id="demo">

</div>

这是一个小提琴...Code

【问题讨论】:

  • 找到“随机&lt;div&gt;”的对象后立即将其保存到变量中,然后随心所欲地使用它。没有火箭科学。
  • @ivan_pozdeev-我也试过了,但它对我不起作用......请看同样的小提琴......link

标签: javascript jquery html css


【解决方案1】:

所以你是说当你点击(例如在按钮上)时,可点击的 div 被添加到 DOM 中

这意味着这些 div 一开始并不存在,因此您可以使用

Babak Naffas 答案以及 .delegate 方法

例子

$('body').delegate('.main_div > div','click',function(){
  // here goes your instructions

});

有关更多详细信息,您可以查看: jQuery: difference between .click() AND .on("click")

【讨论】:

  • @hamism- 是的!我想你让我 80% 正确..我是说我已经在我的主 div 里面有那个随机 div..所以我只想点击随机 div 而不是主 div 中的任何地方..请检查这个@987654322 @
  • 您可以向所有您希望可点击的 div 添加一个类,例如 class='clickable' 然后在您的 jquery 代码中使用 $('.main_div .clickable') 我希望这就是你想达到的
  • @hamism- 其实我不想在预定义的位置点击 div ..它应该在随机的地方..请看下面的链接..这是一个游戏。但我正在尝试完全相同。 .link
  • @sanjay 但是当您将 ('
    ') 附加到 $m 时,您不知道新插入的 div 的位置和我的类正在谈论的是这样添加的('&lt;div title=' + i + ' class="clickable" /&gt;')
【解决方案2】:

如果您要求在单击构成矩阵的 NxN &lt;div&gt;s 时触发事件,您可以尝试

 $(".main_div > div").on('click', function (evt) { ... } );

这会将函数(第二个参数)附加到矩阵中&lt;div&gt; 的点击事件,就像使用相同选择器的 CSS 类一样。

【讨论】:

  • 是的!现在我也可以点击形成的 n X n div。特别是我期待点击在每次点击时形成的随机彩色“div”。请检查遵循相同的 feddle 代码。这样您就可以确切地了解我的期望..感谢您给我时间..link
猜你喜欢
  • 2020-03-23
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多