我在这个jsfiddle中有一些盒子 - http://jsfiddle.net/SzDZn/1/ - 我想知道为什么点击它们仍然会将身体显示为活动元素:
$('#blue_box').click(function() {
alert ("active box is " + document.activeElement);
});
这里的目标是当咔嗒声在它之外时,实际上让一个盒子消失,即它的模糊事件,但是我甚至无法让盒子成为焦点,更不用说失去焦点。 / p>
由于
答案 0 :(得分:2)
对于要获得焦点的元素,它必须能够接收输入。没有任何“盒子”可以使它们在被点击时不被认为具有焦点。有一些方法可以通过在元素上设置tabindex来绕过焦点要求,但这仍然被认为是非标准的。
“如果没有选择,则有效元素是网页的<body>
。” - Mozilla - activeElement
的 jsFiddle Demo
强> 的
答案取决于您的标题,但并未完全解决您的本地化示例。在您的示例中,如果您希望单击时元素变为“活动”,则只需给它一个类。例如,让我们给每个元素点击类“activeElement”。现在,当注册任何click事件时,我们知道如果我们删除带有“activeElement”类的元素,我们将删除最后一个被单击的框。让我们确保我们不会意外地允许这些点击事件传播,否则我们将删除错误的元素。
$('#red_box').click(function(e) {
e.stopPropagation();
$('.activeBox').remove();
$(this).addClass("activeBox");
alert($(".activeBox")[0].id + " is the active box");
});
$('#green_box').click(function(e) {
e.stopPropagation();
$('.activeBox').remove();
$(this).addClass("activeBox");
alert($(".activeBox")[0].id + " is the active box");
});
$('#beige_box').click(function(e) {
e.stopPropagation();
$('.activeBox').remove();
$(this).addClass("activeBox");
alert($(".activeBox")[0].id + " is the active box");
});