我试图在单击一个按钮时将一个类添加到div,根据哪个div最后有焦点。
我可以获得div的id,但不能点击按钮
<div contenteditable="true" id="duck">one</div>
<div contenteditable="true" id="dog">two</div>
<div contenteditable="true" id="cat">three</div>
<input type="label" id="showValue"></input>
<button id="clickMe">Click me</button>
和js
var divbox = document.getElementsByTagName('div');
for (var i = 0; i < divbox.length; i++)
divbox[i].addEventListener('focus', function() {
$('#showValue')[0].value = this.id;
}, false);
$('#clickMe').click(function() {
alert(divbox)
});
答案 0 :(得分:1)
所以,如果我正确地理解你的问题,解决它的一种方法就是这样(同时删除vanilla和jQuery的混合,只使用jQuery)
$("div").focusin(function() {
$(".focused").removeClass("focused");
$(this).addClass("focused");
});
$('#clickMe').click(function() {
$(".newClass").removeClass("newClass");
$(".focused").addClass("newClass");
});
&#13;
div {
border: 1px solid red;
padding: 1em;
margin: 1em
}
.newClass {background: pink}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div contenteditable="true" id="duck">one</div>
<div contenteditable="true" id="dog">two</div>
<div contenteditable="true" id="cat">three</div>
<button id="clickMe">
Click me
</button>
&#13;
我们的想法是使用focusin
事件来附加标记类,以便您知道哪个div是最后一个具有焦点的div。例如,你不能依赖:focus
伪类,因为只要你点击按钮,div就会失去焦点。然后,当您单击该按钮时,您只需找到包含focused
类的div并将newClass
添加到其中。
答案 1 :(得分:1)
仍然无法理解你的目的,但根据你的代码,你可以让它像这样工作
$(function(){
$("div").hover(function(){
$("#showValue").val($(this).attr('id'));
})
})
$('#clickMe').click(function() {
$("#"+$("#showValue").val()).addClass('newClass')
});
div {
border: 1px solid red;
padding: 1em;
margin: 1em
}
.newClass {background: pink}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div contenteditable="true" id="duck">one</div>
<div contenteditable="true" id="dog">two</div>
<div contenteditable="true" id="cat">three</div>
<input type="text" id="showValue">
<button id="clickMe">
Click me
</button>