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我很感激。如果我能给你们两个答案,我会的。这是一张赞成票!我很感激。如果我能给你们两个答案,我会的。这是一张赞成票!