jQuery触发器点击具有特定属性

时间:2017-10-31 14:56:40

标签: javascript jquery html

嘿伙计们我正在搜索我的下拉菜单,我遇到了一些问题。 当您通过在键盘上键入来搜索我的下拉列表时,搜索中的元素会更改背景颜色。现在我想要的是在您搜索时触发点击事件,并在找到您想要的国家后按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

上面的函数

1 个答案:

答案 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()点击它。