带有嵌套div的可点击div

时间:2012-06-28 23:12:35

标签: jquery css html anchor block

我希望制作一个可点击的div,其中嵌入了更多div。根据我的理解,如果你设置一个锚标签display:block,它就像一个块(div),你可以将想要点击的div嵌套在其中。

但是,我不相信你可以继续嵌套更多的div ...如果是这样的话,那为什么呢?

而且,解决这个问题的最佳/最简单的解决方案是什么。理想情况下,它将是所有CSS / HTML,但如果CSS / HTML真的不可能,那么jQuery解决方案就可以了。

无论如何......例如:

只要锚定为display:block ...

,这样就可以了(是吗?)

在这里输入代码

<a>
     <div id='first'>
     </div>
</a>

这不会......

在这里输入代码

<a>
     <div id='first'>
          <div id='inside first'>
          </div>
          <div id='inside first 2'>
          </div>
     </div>
</a>

任何和所有帮助表示赞赏。谢谢!

4 个答案:

答案 0 :(得分:1)

当然,你的第二个变种会起作用 - http://jsfiddle.net/W5jG8/你可以更深入。事实上,嵌套的深度是没有限制的。 (或者可能存在,但它与现实生活中的情况无关)

但是在HTML5之前将块级元素嵌套到最初的内联元素中在语义上是不正确的。一种解决方案是用<div> - s替换所有<span> - s,并使它们阻止。

或者您可以将<div> - s与jQuery一起使用,并将一个点击侦听器附加到包装器 - http://jsfiddle.net/W5jG8/

答案 1 :(得分:1)

如果您使用HTML5 Doctype,使用锚标记包装div元素是有效的,假设您没有使用HTML5 Doctype,您也可以尝试这样做:

div#first {
  cursor: pointer;
}

$('#first').click(function() {
    window.location = 'http://www.example.com'
})

答案 2 :(得分:0)

最简单的方法是使用jquery,为你想要clikable的div指定一个Id,如下所示:

$('#div_Id').click(function(){

blablabla...

});

这是somme doc:http://api.jquery.com/click/

答案 3 :(得分:0)

将div标记放在锚标记内是无效的html所以你不应该这样做。 在您的情况下,最简单的方法是使用一些JavasScript并在父div上定义一个简单的onclick事件,例如:

 <div id='first' onclick="javascript:MyRedirectFunction()">
      <div id='inside first'>
      </div>
      <div id='inside first 2'>
      </div>
 </div>

然后,如果您希望用户了解此div可以被点击,您可以使用CSS为其提供类似锚的行为,例如:

div#first{ cursor: pointer; }
div#first:hover{ background-color:#CCCCCC;}