javascript - 如何基于数组动态附加点击事件监听器?

标签 javascript

好吧...请不要因为这段代码看起来多么恶心而恨我,但我正在努力优化它。我想为两个数组中的每组变量重新运行属性,但我似乎无法让它工作。我还尝试过其他方法,例如使用 for 循环,但也没有运气。谁能指导我找到一些可以帮助我更好地了解我可以在这里做什么的资源?

这是原始代码:

<script>
$('.selectTrackThree').click(function(){
    selectFinal(".selectTrackThree", "#trackThreeDiv");
});
$('.selectTrackFour').click(function(){
    selectFinal(".selectTrackFour", "#trackFourDiv");
});
$('.selectTrackFive').click(function(){
    selectFinal(".selectTrackFive", "#trackFiveDiv");
});
$('.selectTrackSix').click(function(){
    selectFinal(".selectTrackSix", "#trackSixDiv");
});
$('.selectTrackSeven"').click(function(){
    selectFinal(".selectTrackSeven", "#trackSevenDiv");
});
$('.selectTrackEight').click(function(){
    selectFinal(".selectTrackEight", "#trackEightDiv");
});
$('.selectTrackNine').click(function(){
    selectFinal(".selectTrackNine", "#trackNineDiv");
});
$('.selectTrackTen').click(function(){
    selectFinal(".selectTrackTen", "#trackTenDiv");
});
$('.selectTrackEleven').click(function(){
    selectFinal(".selectTrackEleven", "#trackElevenDiv");
});
$('.selectTrackTwelve').click(function(){
    selectFinal(".selectTrackTwelve", "#trackTwelveDiv");
});
$('.selectTrackThirteen').click(function(){
    selectFinal(".selectTrackThirteen", "#trackThirteenDiv");
});
$('.selectTrackFourteen').click(function(){
    selectFinal(".selectTrackFourteen", "#trackFourteenDiv");
});
$('.selectTrackFifteen').click(function(){
    selectFinal(".selectTrackFifteen", "#trackFifteenDiv");
});
$('.selectTrackSixteen').click(function(){
    selectFinal(".selectTrackSixteen", "#trackSixteenDiv");
});
$('.selectTrackSeventeen').click(function(){
    selectFinal(".selectTrackSeventeen", "#trackSeventeenDiv");
});
</script>

这是我使用 for 循环对其进行优化的尝试:

<script>
var index;
var a = [".selectTrackOne", ".selectTrackTwo"];
var b = ["#trackOneDiv", "#trackTwoDiv"];
for (index = 0; index < a.length; ++index) {
    $(a[index]).click(function(){
        selectFinal(a[index], b[index]);
    });
});
</script>

最佳答案

看来您不需要两个数组。只有一个 - 拼写出的数字列表。

尝试一下以下内容:

var numbers = ['One', 'Two', 'Three'];

numbers.forEach(function (number) {
    $('.selectTrack' + number).click(function () {
        selectFinal('.selectTrack' + number, '#track' + number + 'Div');
    });
});

关于javascript - 如何基于数组动态附加点击事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52727890/

相关文章:

javascript - 将 vbs 转换为 js : for each . .. in

javascript - 无流连接到 Kurento Room

javascript - VueJS : React to State change through mapGetters receiving arguments

javascript - 如何检测javascript文本字段中的shift按钮/清除输入?

javascript - 非零值的 Google 图表趋势线

javascript - WordPress + jQuery Mobile - 主线程上的同步 XMLHttpRequest 已弃用?

javascript - 如何在 Three.js 中向前移动对象?

javascript - 自动提交单选按钮但保持选中状态

javascript - JS-错误 : Cannot read property 'lat' of undefined

javascript - 错误 : Not implemented: window. 滚动到。我们如何从 Jest 测试中删除这个错误?