【问题标题】:jQuery click trigger applied to arrow key not workingjQuery单击触发器应用于箭头键不起作用
【发布时间】:2013-03-13 21:52:50
【问题描述】:

我试图使用 jQuery 的 trigger() 方法将箭头导航应用到图片库。

我从另一个 stackoverflow 用户那里得到了一个例子,它似乎很好,但是当我向列表项添加真实链接时,它们只会在单击时加载,而不是在按下箭头键时加载。

In this JSfiddle 最后两个列表项“apple”和“microsoft”具有真实链接,当它们被箭头键激活时,它们应该将页面加载到 iFrame 上,但它们没有。它们仅在单击时才能正常工作。

如何使按键等于点击?

var chosen = "";
$(document).keydown(function(e){ // 38-up, 40-down
    chosen = $('li.selected').index(); //grab the current selection
    if (e.keyCode == 40) { 
        if(chosen === "") {
            chosen = 0;
        } else if((chosen+1) < $('li').length) {
            chosen++; 
        }
        selectImage(chosen);
        return false;
    }
    if (e.keyCode == 38) { 
        if(chosen === "") {
            chosen = 0;
        } else if(chosen > 0) {
            chosen--;            
        }
        selectImage(chosen);
        return false;
    }
});

function selectImage(whichIndex) {
    $('li:eq('+whichIndex+') a').trigger("click");
}
$("#selection a").click(function() {
    $('li').removeClass('selected'); 
    $(this).parent().addClass('selected');

    $("#debug").text( $(this).attr("href") +" was just clicked");   
});

【问题讨论】:

    标签: jquery triggers arrow-keys


    【解决方案1】:

    .trigger() 函数只会导致您使用 jQuery 附加的处理程序方法执行。它不会导致&lt;a&gt; 元素的正常行为执行。也就是说,它不会加载&lt;iframe&gt;

    您可以使用e.preventDefault() 来防止&lt;a&gt; 元素执行其默认行为,并添加显式执行它的代码。这样,当它被点击和.trigger() 被调用时,它都会执行。

    在您的情况下,您需要设置&lt;iframe&gt;src 属性。

    尝试将事件处理程序更改为:

    $("#selection a").click(function(e) {
        var $a = $(this);
        e.preventDefault();
        $a.parent().addClass('selected').siblings().removeClass('selected');
        $('iframe[name=iframeload]').prop('src', $a.attr('href'));
        $("#debug").text( $a.attr("href") +" was just clicked");   
    });
    

    【讨论】:

    • 我不知道如何应用这个……它在脚本中吗?因为我必须指向许多不同的链接,所以我想在 html 标记中指定链接。
    • @Rene - 在我更新我的答案之前你的最后一条评论是什么?如果是这样,请查看更新。
    • 是的,我在更新答案之前写了最后一条评论。谢谢!今晚我会调查一下。
    • 完美!我只是设法添加了这个,它的工作方式正是我想要的,每次点击/按键都会触发另一个 javascript 操作。非常感谢。
    • Here it is in use ...可以让顶部缩略图成为脚本的默认选择吗?按下箭头选择它,但由于它已经在 html 中被选中,它只是再次加载它。另外:是否可以让每个箭头按下向上/向下滚动 100 像素?或以其他方式保持选定的缩略图可见?
    猜你喜欢
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2015-04-28
    相关资源
    最近更新 更多