ОК. Я просто решил это, добавив его пространство имен.
newPhrase2 = '''<d:entry xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng" id="{}" d:title="{}">
<d:index d:value="{}" d:title="{}"/>
<h1>{}</h1>
<div class="ODECN">
<div class="extras">
<h2>{}</h2>
<div class="phrase">
{}
{}
</div>
<p class="ref">See main entry:
<a href="x-dictionary:d:entry://{}#uwid1191809650">do</a>
</p>
</div>
</div>
</d:entry>
'''.format(new_id, title, title, title, title, title, odef_ext, defs, source_title)
Большая часть простого решения состоит в том, чтобы добавить дополнительный onclick обработчик к ссылке в Вашем DIV, который останавливает распространение события:
<div id="toggle_section"
onclick="javascript: new Effect.toggle('toggle_stuff', 'slide');">
<div id="toggle_title">Some title</div>
<div id="toggle_stuff">
some content stuff
<a href="/foo.php"
onclick="Event.stop(event);"
>Some link</a>
</div>
</div>
Вышеупомянутый пример использует Прототип Event.stop()
функционируйте для упрощения перекрестной остановки распространения события браузера.
Поскольку Вы используете встроенное onclick()
обработчик, большинство (если не все) браузер пересечет событие в пузырящейся фазе сначала (который является тем, что Вы хотите).
Хорошее руководство по пониманию истинных причин позади этого поведения и различий между получением события и распространением событий может быть найдено в превосходном Quirksmode.
После того, как я отправил свой первый вопрос, я не мог ожидать, чтобы попытаться думать об этом еще раз, и кажется, что я нашел довольно простой способ достигнуть этого.
Я переместил onlick Effect.toggle
в отдельную функцию как:
function someClick(event) {
if (event.target.nodeName == 'A') {
return;
} else {
new Effect.toggle('toggle_stuff', 'slide');
}
}
Я предполагаю, что это только работало бы на A
теги и ничто еще, которое активируемо по щелчку все же.
Я действительно не знаю, работало ли это, но пытаться дать элементу ссылки большее z-index
значение, чем toggle_section отделение.
что-то как:
#toggle_section a { z-index: 10; }