为什么&这个脚本在哪里返回未定义?

时间:2016-04-20 08:08:18

标签: javascript jquery url anchor

我正在尝试使用以下代码将#(#标签)附加到网址,以关闭使用CSS :target属性构建的灯箱。这个脚本在' esc '键的keydown上执行就好了,但返回example.com/#undefined而不仅仅是example.com/#

我为成为JS初学者而道歉,但我如何定义它才能返回单#

$( document ).on( 'keydown', function ( e ) {
    if ( e.keyCode === 27 ) {
        var href = this.href;
        window.location.hash = href;
    }
});

返回#undefined而非#

1 个答案:

答案 0 :(得分:2)

答案是,在您的处理程序this中引用了document对象,该对象没有href属性值。因此,您的href变量的值为undefined,因此哈希值更新为undefined

现在问题的解决方案将取决于问题中未共享的细节,例如html的外观,何时以及如何工作等等

您想要获取目标元素的href,然后您可以使用

var href = e.target.href || '';

var href = $(e.target).closest('[href]').attr('href') || '';