如何让我的点击捕捉器工作

How do I make my click catcher work?

本文关键字:工作 我的      更新时间:2023-09-26

我正在尝试创建一个简单的点击捕捉器,如果你点击.image-class javascript将从另一个类名为.btn的元素中获取href,并将你发送到它的目的地。虽然我在第 7 行和第 10 行不断收到错误,说未定义不是一个函数。我该如何完成这项工作?

<script>
var ClickCatcher=
{
    init:function(){
        var link = jQuery('.btn')[1].href;
        var imgCatch = jQuery('.image-class');
        imgCatch.addEventListener("click", ClickCatcher.clickListener, false);
    },
    clickListener:function(){
        window.location = link;
    }
};
ClickCatcher.init();
</script>

你可以用jquery通过一个简单的点击事件来做到这一点

jQuery('.image-class').on('click', function (){
    window.location = jQuery('.btn').eq(1).attr('href');
});

但是如果你仍然想以你的方式写作,你可以这样做:

var ClickCatcher = {
    init: function () {
        jQuery('.image-class').on('click', function (){
            window.location = jQuery('.btn').eq(1).attr('href');
        });
    }
};
ClickCatcher.init();

只需确保在 dom 加载后触发 init 方法即可。

更新:它

的一个问题是您在代码中编写了目标等代码而不是传递它,因此很难重用,您最好这样做:

var ClickCatcher = {
    init: function ($button, loc) {
        $button.on('click', function (){
            window.location = loc;
        });
    }
};
ClickCatcher.init(jQuery('.image-class'), jQuery('.btn').eq(1).attr('href'));

这样,内部工作与 dom 是分开的(因为您将 dom 依赖项传递给函数。

@atmd展示了一个非常好的方法。如果你只是想知道你的错误是什么。在你的jQuery状态中获取btn href是一个错误

jQuery('.btn')[1].href

你需要调用 attr 函数,然后获取 href attr.并使用 .eq(1) 将集合减少到第一个 btn

jQuery('.btn').eq(1).attr('href);