【问题标题】:jQuery: Trigger click event of <a> tag on key-downjQuery:在按键上触发 <a> 标签的点击事件
【发布时间】:2015-03-11 10:11:24
【问题描述】:

我创建了一个 html 页面,它显示图像并根据左右箭头键导航到其他图像。

有一个带有 download 属性的锚标记。当前显示在屏幕上的图片路径通过jquery设置为该标签的href

单击此链接可下载图像。我需要按下向下箭头时,应该下载图像。 (总之应该触发这个锚标签的点击事件。)

我尝试了 jquery trigger 函数但无法正常工作。下面是我的代码。

提前致谢。

<!doctype HTML>
<html>
<head>
<title>My Page</title>
<script
    src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<style type="text/css">
div.links {
    top: 95%;
    left: 45%;
    position: fixed;
}

a.dLink, a.nav {
    text-decoration: none;
}

label {
    background: #330033;
    padding: 2px;
    color: #CC9933;
    cursor: pointer;
}
</style>
</head>

<body>
    <input type="hidden" id="iNames"
        value="IMG1.jpg,IMG2.jpg,IMG3.jpg">
    <img class="pic" />
    <div class="links">
        <label class="prev">Prev</label>
        <a class="dLink" href="" download>
           <label>Download</label>
        </a>
        <label class="next">Next</label>
    </div>
    <script type="text/javascript">
        $(document).ready(
                function() {
                    iNames = ($("#iNames").val()).split(",");
                    total = iNames.length;
                    i = 0;
                    $("img.pic").attr("src",iNames[i]);
                    $("a.dLink").attr("href", $("img.pic").attr("src"));
                    $(document).keydown(function(e) {
                        switch (e.which) {
                        case 37: // left
                            prev();
                            break;

                        case 39: // right
                            next();
                            break;
                        case 40: // down
                            $("a#dLink").trigger("click"); //this is not working
                            break;
                        default:
                            return; 
                        }
                    });

                    function next() {
                        i = i == total - 1 ? 0 : i + 1;
                        setImage();
                    }
                    function prev() {
                        i = i == 0 ? total - 1 : i - 1;
                        setImage();
                    }
                    function setImage() {
                        $("img.pic").attr("src",iNames[i]);
                        $("a.dLink").attr("href", $("img.pic").attr("src"));
                    }
                    $("label.next").click(function() {
                        next();
                    });
                    $("label.prev").click(function() {
                        prev();
                    });
                });
    </script>
</body>
</html>

【问题讨论】:

标签: jquery html download anchor


【解决方案1】:

有一个小错别字。

试试这个:

$("a.dLink")[0].click();

Demo

因为dLink 是应用于&lt;a&gt; 的类。您必须使用a.dLink 选择器。

【讨论】:

  • 我在页面中只有一个锚标记,如代码所示 + 只有一个具有“dLink”类的元素。这工作..
【解决方案2】:

触发原生点击事件调用DOM节点方法代替:{需要使用类选择器,而不是ID}

$(".dLink")[0].click();

【讨论】:

  • 不工作..错误:未捕获的类型错误:无法读取未定义的属性“点击”
  • 这有效.. 但在$(".dLink")[0].click();$("a.dLink").trigger("click"); 之间没有区别
  • .dLink 将触发具有该类的任何元素,而 a.dLink 将仅触发与任何 &lt;a&gt; 关联的提到的类。
猜你喜欢
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多