我尝试使用jQuery将click事件处理程序添加到一组动态生成的div中,代码如下:
for (var i = 0; i < 10; ++i) {
var testdiv = document.createElement('div');
testdiv.innerHTML = 'test' + i;
testdiv.id = 'test' + i;
var nestingdiv = document.createElement('div');
nestingdiv.classList.add('nestingdiv');
nestingdiv.appendChild(testdiv);
setTestClickHandler(i);
end
function setTestClickHandler(i) {
$('#test' + i).click(function() {
alert(i);
});
这在正常情况下是完全可行的,但是只要我像这样向.nestingdiv
类添加一个float参数:
.nestingdiv { float:left; }
点击处理程序不再触发(在Firefox和Chrome上测试)。有人知道为什么会这样吗?或者我该如何修复它?
1条答案
按热度按时间k10s72fa1#
问题不在于JavaScript,而在于CSS。换句话说,“click”处理程序是正常的。当唯一的嵌套元素是浮动的时,父元素失去了它的“结构”(因为没有更好的词)并崩溃。它仍然存在,但现在是1px高。
解决方案:http://css-tricks.com/snippets/css/clear-fix/
替代解决方案:http://thinkvitamin.com/design/everything-you-know-about-clearfix-is-wrong/