[英]How to access a `<div>` tag inside a `<p>` tag?
$("p div").click(function() { $(this).css({ "color": "#F00", "font": "bold 20px verdana", "background-color": "#0FF" }); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p>Hello<div> World!</div></p>
当我单击“世界”文本时,什么也没有发生,当我检查元素时,它说:
<p>Hello</p>
<div> World</div>
<p></p>
注意那些<p>
标签。 怎么会这样?
浏览器将<div>
从<p>
中踢出,因为它不是一个有效的位置,所以你不能在那里 select 它。
浏览器经常会尝试对无效的 HTML 进行更正,但结果不一定是可预测的,因此您需要改用有效的 HTML。
http://www.w3.org/TR/html401/struct/text.html#h-9.3.1
“P元素代表一个段落。它不能包含块级元素(包括P本身)。”
那很有意思。 问题是您的浏览器工作正常,我讨厌这种情况发生。 P
是一个内嵌标签,而DIV
是一个块标签(也就是说,它代表屏幕的一个矩形区域,而不是像内嵌标签那样可能不规则的文本部分),并且有一个规则,你不能将块标签放在内联标签内,这就是您的浏览器解决它的方式。
编辑:我注意到@magicmike 提出了一个很好的解决方案:
<p>Hello<span> World!</span></p>
浏览器不会尊重您在p
中放置div
的位置。 将其更改为span
。 这是一个工作的 Fiddle 。
div
出现在p
中是无效的。 这就是为什么 Firefox 重新排列了您的 [损坏的] HTML,您可以通过 Firebug 看到它的“固定”结果。 请改用span
。
另外,不要忘记将此事件处理程序设置放在 onLoad 处理程序中,因为当您的脚本最初运行时,您的p
和span
不一定存在:
$(function() {
$('p span').click(function(){
$(this).css({
'color': '#F00',
'font': 'bold 20px verdana',
'background-color': '#0FF'
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.