2012-06-28 2 views
0

Я ищу сделать интерактивный div, в котором есть дополнительные divs внутри. Из того, что я понимаю, если вы создаете отображение тега привязки: block, он действует как блок (div), и вы можете вставить div, который вы хотите кликать в нем.Щелкните мышью div с вложенными divs внутри

Тем не менее, я не верю, что вы можете продолжить вложение дополнительных divs за пределы этого ... если это так, то почему?

А также, что было бы лучшим/простым решением для решения этой проблемы. В идеале это был бы весь CSS/HTML, но решение jQuery было бы в порядке, если CSS/HTML действительно невозможен.

... В любом случае пример:

Это будет работать до тех пор, как якорь стилизовано дисплей (да?): Блок ...

введите код здесь

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

Это будет не ...

введите код здесь

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

Любая помощь оценивается. Благодаря!

+1

Вы можете гнездиться на любом уровне глубоко внутри якоря (при условии, конечно, HTML5). Ваш второй пример работает. Почему вы думаете, что это не так? –

+0

Он делает? Я просто прочитал, что это не так. Я не понимал, что ... Думаю, я читаю еще несколько устаревших ответов.Кроме того, с HTML5 я предполагаю, что мне все еще нужно назначить «display: block» тегу привязки, чтобы заставить его работать, да? – jstacks

+0

Нет, вам не нужно делать «display: block;». Если внутри якоря есть элемент уровня блока, он будет отображаться как блок как обычно. См. Эту скрипту: http://jsfiddle.net/uyrn4/3/ –

ответ

1

Конечно ваш второй вариант будет работать - http://jsfiddle.net/W5jG8/ Вы можете пойти еще глубже. На самом деле нет предела тому, насколько глубоко вы можете заниматься гнездом. (Или, может быть, есть, но это не относится к реальным случаям)

Но семантически некорректно вставлять элементы уровня блока в исходные строки перед HTML5. Одним из решений является замена всех <div> -s на <span> -s, а также их блокирование.

Или вы можете использовать <div> -s с JQuery и прикрепить щелчок слушателя к обертке - http://jsfiddle.net/W5jG8/

+0

Итак, вы можете сделать это с помощью HTML5, но это семантически некорректно. Каковы последствия его семантической неверности? И не будет ли , сделанный в блок, точно так же, как div? Как это может улучшить семантически? Я не эксперт здесь, так что любое/все помогают понять. Благодаря! – jstacks

+0

Будучи семантически неправильным, вы столкнетесь с огромным смущением, когда другие разработчики будут изучать ваш код :) С серьезной стороны - http://www.webdesignfromscratch.com/html-css/why-write-semantic-html/ –

0

Самый простой способ заключается в использовании JQuery, чтобы указать идентификатор для DIV вы хотите сделать clikable так:

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

blablabla... 

}); 

Вот Сомма документ: http://api.jquery.com/click/

+0

О, извините, я действительно не понял ваш вопрос: на самом деле вы ищете, как сделать div интерактивным ... – Newben

1

если вы используете HTML5 Doctype она действует использовать анкерные теги для упаковки Div элементов, предположив, что вы не используете HTML5 Doctype то ты можно также попробовать это:

div#first { 
    cursor: pointer; 
} 

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

Ввод Div теги внутри тега привязки не является допустимым HTML, так что вы не должны делать это. В вашем случае, проще всего было бы использовать немного JavasScript и определить простой OnClick событие на ваш родительский DIV, такие как:

<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;} 
Смежные вопросы