javascript - 如何使用纯 JavaScript 使整个 div 可点击?

标签 javascript html clickable

我不需要用 jQuery 编写这个,但我对简单的 javascript 不够熟悉,无法弄清楚它。 Chris Coyier 写了 nice explanation of what I'm talking about here .

我想要转换它的原因是因为我不需要为这段代码包含整个 jQuery 库。我可以使用普通的旧 JavaScript 来保存额外的请求。

这是我要转换的示例代码:

$(document).ready(function() {
    $(".featured").click(function(){
        window.location=$(this).find("a").attr("href"); return false;
    });
});

这是我到目前为止所想到的:

document.addEventListener("DOMContentLoaded", function() {
    document.querySelectorAll("div.feature").click(function(){
        window.location=$(this).find("a").setAttribute("href"); 
        return false;
    });
});

据我所知,其中不正确的一件事是 querySelectorAll,它只查找 div 元素,对吧?另一件事是 $(this),我不知道如何将其转换为纯 JavaScript。

最佳答案

假设...

  • 您知道浏览器支持 querySelectorAll 但你仍然使用它
  • 那个addEventListener仅适用于符合标准的浏览器

我相信你的意思是:

//get all a's inside divs that have class "featured"
var feat = document.querySelectorAll("div.featured a"),
    featlen = feat.length,
    i;

//loop through each
for(i=0;i<featlen;++i){
    //add listeners to each
    feat[i].addEventListener('click',function(){
        window.location = this.href;
    },false);
}
<小时/>

或者您可以使用 <div>包裹在 <a> 。无需JS。这是完全有效的 HTML,尽管有内联元素不应包含 block 元素的规则,但浏览器确实可以按预期工作。只要确保有 display:block<a>以及调整其大小。

<a href="location">
    <div> content </div>
</a>

关于javascript - 如何使用纯 JavaScript 使整个 div 可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10696502/

相关文章:

ios - UILabel 中的可点击用户名和主题标签(不是 UIWebView!)

javascript - Electron-vue : 'compute:' does not work

javascript - Firebase-database - 云函数查询

javascript - 具有回调数组的 JS 函数

javascript - FullPage.js - slider 每次自动滚动到顶部

javascript - 使用 jquery 水平背景 css 位置

javascript - 如何调整 react 表中的整个列边框

html - 仅使用 CSS 扩展菜单栏

html - 背景图像的顶部区域可点击吗?

android - 创建具有不同点击状态的不规则形状的 ImageButton