我正在尝试使用以下代码将#
(#标签)附加到网址,以关闭使用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
而非#
。
答案 0 :(得分:2)
答案是,在您的处理程序this
中引用了document
对象,该对象没有href
属性值。因此,您的href
变量的值为undefined
,因此哈希值更新为undefined
。
现在问题的解决方案将取决于问题中未共享的细节,例如html的外观,何时以及如何工作等等
您想要获取目标元素的href
,然后您可以使用
var href = e.target.href || '';
或
var href = $(e.target).closest('[href]').attr('href') || '';