【问题标题】:How to modify divs generated by jQuery?如何修改jQuery生成的div?
【发布时间】:2016-11-09 09:59:26
【问题描述】:

在这里完成菜鸟问题:

我有这个由 jQuery 生成的 16x16 div 网格

var rows = 16;
var columns = 16;
var $row = $("<div />", {
  class: 'row'
});
var $square = $("<div />", {
  class: 'square'
});

$(document).ready(function() {
  for (var i = 0; i < columns; i++) {
    $row.append($square.clone());
  }

  for (var x = 0; x < rows; x++) {
    $(".box_main").append($row.clone());
  }
});
.row {
  width: auto;
  height: 40px;
  background: #313131;
}
.square {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  margin: 0;
  display: inline-block;
  background: #fff;
}
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

我能否以某种方式使用 addClass 和 removeClass(或其他任何东西)来在每个 div 上悬停/mouseenter 时一一更改背景颜色?

我尝试过解决一些问题,但我什至不确定是否可以这样做。

【问题讨论】:

  • 是的,您可以使用 css 类来更改 divs 的样式。在询问之前,您可能想先自己尝试一下。 ;)
  • 这在 jQuery 中很容易,但在 CSS 中更容易。使用选择器.square:hover 制作新样式并在此处设置背景颜色。
  • 我试过了,但我什至不确定要选择哪个元素?每次我做某事时,网格就会消失。

标签: javascript jquery html css


【解决方案1】:

addClass()/removeClass()(甚至 JS)不需要这样做 - 你可以单独使用 CSS 的 :hover pseduo 选择器来实现它。试试这个:

.square:hover {
  background: #C00; /* amend colour as needed */
}

工作示例:

var rows = 16;
var columns = 16;
var $row = $("<div />", {
  class: 'row'
}).appendTo('body');
var $square = $("<div />", {
  class: 'square'
});

$(document).ready(function() {
  for (var i = 0; i < columns; i++) {
    $row.append($square.clone());
  }

  for (var x = 0; x < rows; x++) {
    $(".box_main").append($row.clone());
  }
});
body {
  background: #313131;
}
.row {
  width: auto;
  height: 40px;
  background: #313131;
}
.square {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  margin: 0;
  display: inline-block;
  background: #fff;
}
.square:hover {
  background: #C00;
}
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 谢谢,如果我想要不同的颜色,例如不同的按钮,我不确定是否可以使用 :hover?
  • 它可以工作,但我需要更多关于控制哪些颜色应该在哪些元素上使用的逻辑的详细信息。我建议你用这些细节开始一个新问题。
【解决方案2】:

除了:hover pseduo 选择器之外,您可能需要使用 JS 为其添加一个实际的类(如果由其他事件触发可能更有意义),但是,这里是一个使用 JS 的示例(addClass/removeClass)

var rows = 16;
var columns = 16;
var $row = $("<div />", {
  class: 'row'
});
var $square = $("<div />", {
  class: 'square'
});
$row.appendTo('body');

$(document).ready(function() {
  for (var i = 0; i < columns; i++) {
    $row.append($square.clone());
  }

  for (var x = 0; x < rows; x++) {
    $(".box_main").append($row.clone());
  }

  $('.square').hover(function() { $(this).addClass('hovering'); }, function() { $(this).removeClass('hovering'); });
});
.row {
  width: auto;
  height: 40px;
  background-color: #313131;
}
.square {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  margin: 0;
  display: inline-block;
  background-color: #fff;
}
.hovering {
  background-color: cyan;
  border: 3px dashed blue;
  width: 34px;
  height: 34px;
}
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 悬停工作但如果我想让它像“绘图”一样工作怎么办?我想我问错了问题 *facepalm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 2011-10-17
  • 2020-11-11
  • 2018-10-10
  • 2014-05-22
  • 1970-01-01
相关资源
最近更新 更多