替代解决方案:关注多个按钮
Alternative solution for :focus on multiple buttons
我正在努力为 :focus
找到一个不同的解决方案,当点击一个按钮时,如 Safari doesn't support :focus on buttons。
我有一个包含 16 个按钮的字段,点击时应该改变颜色,点击不同的按钮时应该松开。
我创建了 this fiddle 来展示这些事件。 toggleClass
不是正确的解决方案,希望避免 :focus
.
当前JS代码:
$(".tbl-button").on("click", function() {
$(".tbl-button:focus").addClass("table-btn-color");
});
你能试试把这个换成:
$(".tbl-button:focus").addClass("table-btn-color");
由此
$( document.activeElement ).addClass("table-btn-color");
您只需将 css 声明从 .table-btn-color
更改为 .tbl-button:active
。
但是如果你想使用jQuery你可以这样做
$(".tbl-button").on("mousedown", function() {
$(this).addClass("table-btn-color");
}).on('mouseup', function(){
$(this).removeClass("table-btn-color");
});
为了在所选元素上保留 class,您可以这样做:
$(".tbl-button").on("mousedown", function() {
// remove the class form all .tbl-button elements
$(".tbl-button").removeClass("table-btn-color");
// add it to the currently pressed element
$(this).addClass("table-btn-color");
})
我正在努力为 :focus
找到一个不同的解决方案,当点击一个按钮时,如 Safari doesn't support :focus on buttons。
我有一个包含 16 个按钮的字段,点击时应该改变颜色,点击不同的按钮时应该松开。
我创建了 this fiddle 来展示这些事件。 toggleClass
不是正确的解决方案,希望避免 :focus
.
当前JS代码:
$(".tbl-button").on("click", function() {
$(".tbl-button:focus").addClass("table-btn-color");
});
你能试试把这个换成: $(".tbl-button:focus").addClass("table-btn-color");
由此 $( document.activeElement ).addClass("table-btn-color");
您只需将 css 声明从 .table-btn-color
更改为 .tbl-button:active
。
但是如果你想使用jQuery你可以这样做
$(".tbl-button").on("mousedown", function() {
$(this).addClass("table-btn-color");
}).on('mouseup', function(){
$(this).removeClass("table-btn-color");
});
为了在所选元素上保留 class,您可以这样做:
$(".tbl-button").on("mousedown", function() {
// remove the class form all .tbl-button elements
$(".tbl-button").removeClass("table-btn-color");
// add it to the currently pressed element
$(this).addClass("table-btn-color");
})