嘿伙计们我正在搜索我的下拉菜单,我遇到了一些问题。
当您通过在键盘上键入来搜索我的下拉列表时,搜索中的元素会更改背景颜色。现在我想要的是在您搜索时触发点击事件,并在找到您想要的国家后按Enter键(如果有多个国家/地区输入应该选择第一个)。我正在使用背景颜色来查找enter
键所需的元素。我试图实现这一目标:
function enterTest() {
$('.dropdown').on('show.bs.dropdown', function() {
$(document.body).on('keypress', addClick);
})
$('.dropdown').on('hide.bs.dropdown', function() {
$(document.body).off('keypress', addClick);
})
function addClick (e) {
var key = e.which;
var $background = $('.dropdown-menu ul li a').css('background-color');
if (key == 13 ) {
if ($background == 'rgba(255, 171, 0, 0.15)') {
$('.dropdown-menu ul li a:eq(0)').click();
}
}
}
}
$('.dropdown-menu ul li a:eq(0)').click();
当我使用这部分时,它总是从所有a
元素中选择第一个元素,但我需要的是选择带有rgba(255, 171, 0, 0.15)
的第一个元素。我试过像这样使用eq():$(this).eq(0).click()
但这也行不通。我也尝试过这样的事情:
if (key == 13 ) {
$background.each(function (i) {
if ($background == 'rgba(255, 171, 0, 0.15)') {
$(this).click();
return;
}
})
}
但这也行不通 有没有办法将click事件触发到具有特定颜色的第一个元素?谁能帮我解决这个问题?这是我的搜索示例的codepen,没有https://codepen.io/Karadjordje/pen/MEBjRY
上面的函数答案 0 :(得分:1)
$('.dropdown-menu ul li a').filter(function(){
$bg = $(this).css('background-color');
if ($bg === 'rgba(255, 171, 0, 0.15)') {
return true;
}
}).eq(0).click();
.filter
部分将您的结果过滤到您返回的任何内容,在这种情况下是背景颜色。 .eq(0)
获取经过筛选的结果,但只返回第一个结果,显然会.click()
点击它。