Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使我的点击捕捉器工作?_Javascript_Unobtrusive Javascript - Fatal编程技术网

Javascript 如何使我的点击捕捉器工作?

Javascript 如何使我的点击捕捉器工作?,javascript,unobtrusive-javascript,Javascript,Unobtrusive Javascript,我正在尝试创建一个简单的点击捕捉器,如果您点击.image class,javascript将从另一个类名为.btn的元素获取href,并将您发送到它的目的地。尽管我在第7行和第10行中不断出错,说undefined不是一个函数。我该怎么做 <script> var ClickCatcher= { init:function(){ var link = jQuery('.btn')[1].href; var imgCatch = jQuery(

我正在尝试创建一个简单的点击捕捉器,如果您点击
.image class
,javascript将从另一个类名为
.btn
的元素获取href,并将您发送到它的目的地。尽管我在第7行和第10行中不断出错,说undefined不是一个函数。我该怎么做

<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>

点击捕捉器=
{
init:function(){
var link=jQuery('.btn')[1].href;
var imgCatch=jQuery('.image类');
imgCatch.addEventListener(“单击”,ClickCatcher.clickListener,false);
},
clickListener:function(){
window.location=链接;
}
};
ClickCatcher.init();

您可以使用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方法

更新:它的一个问题是,您在代码中编写了目标etc,而不是传递它,因此很难重用,您最好执行以下操作:

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依赖项传递给函数时)。

您可以使用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方法

更新:它的一个问题是,您在代码中编写了目标etc,而不是传递它,因此很难重用,您最好执行以下操作:

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展示了一种非常好的方法。如果您只是想知道您的错误是什么。获取btn href是jQuery语句中的一个错误

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

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

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

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

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

如果您已经在使用jQuery,为什么不使用一个简单的单击函数呢?我想使用尽可能少的jQuery,以便锻炼我的Javascript能力。我是Javascript的初学者,我只知道您必须为
getElementsByClassName()创建一个变通方法
函数用于某些版本的IE,这是我不想做的。另一个目标是不处理HTML,所以我必须在特定部分使用jQuery。@Paul RadichIf你已经在使用jQuery了,为什么不使用简单的单击函数呢?我想使用尽可能少的jQuery,以便锻炼我的Javascript能力。我是Javascr的初学者我所知道的是,您必须为
getElementsByClassName()创建一个变通方法
用于某些版本的IE的函数,这是我不想做的。另一个目标是不处理HTML,所以我必须在特定部分使用jQuery。@Paul RadichIs有什么可以先纠正我的错误,然后提供更高效的解决方案吗?@atmdIs有什么可以先纠正我的错误,然后提供更高效的解决方案吗解决方案?@atmdI我很感激。如果我能给你们两个答案,我会的。这是一张赞成票!我很感激。如果我能给你们两个答案,我会的。这是一张赞成票!