如何在 jquery 函数中包含循环

How to include a loop in a jquery function

我正在使用 jquery imagemapster 生成带有突出显示区域和悬停工具提示的图像地图。

我的图像中有 100 个不同的区域和工具提示(所有元素都编号为 1-100)并且一切正常。

但是,我想编写一个函数来循环遍历每个元素,这样我就不必编写 100 次键和工具提示代码。我执行此操作的最佳方法是什么?

我已经尝试了 each()for (i = 0; i < 100; i++) { //code here },但我认为循环输出导致了错误。

需要下面“区域”部分中的循环的当前代码。 3 行显示为 100 的示例。

非常感谢

$(document).ready(function () {

  $('img').mapster({
  showToolTip: true,
  toolTipContainer: '<div class="map_popup"></div>',
  singleSelect : true,
  clickNavigate : true,
  mapKey: 'data-key',
  fill : true, 


  areas: [ 

    // below line needs to be looped. 3 examples shown

    { key: "1", toolTip: "<h3>Controller 1</h3>:<?php echo $Selected_1; ?>" },
    { key: "2", toolTip: "<h3>Controller 2</h3>:<?php echo $Selected_2; ?>" },
    { key: "3", toolTip: "<h3>Controller 3</h3>:<?php echo $Selected_3; ?>" },
    // ...
  ]

});

编辑:尝试像这样遍历图像:

$(document).ready(function() {
    $('img').each(function(ix,ex){
        $(ex).mapster({
            showToolTip: true,
            toolTipContainer: '<div class="map_popup"></div>',
            singleSelect: true,
            clickNavigate: true,
            mapKey: 'data-key',
            fill: true,
            areas: [
            <?php
            foreach ($arraySelected as &$Selected) {%>
                {
                    key: "1",
                    toolTip: "<h3>Controller <?php ech $Selected.id?></h3>:<?php echo $Selected.Text; ?>"
                },
            <?php}
            ?>];
        });
    });
});

不确定其他答案中的 $arraySelected 是怎么回事以及它如何循环 100 次。

我在使用 javaScript 生成数据之前有一个解决方案,但这将使 <?php echo $Selected_1; ?> 变得无用,因为这已完成 server-side 并且 js 已完成 client-side.

需要生成区域数据server-side。我会这样做:

// just data, don't need to wait until DOM is ready
// since you're outputting via PHP, you have to generate data with PHP
const areasData = [
  <?php
    $loopNo = 100;
    for ($i = 1; $i <= $loopNo; $i++) {
        echo '{ key: "' . $i . '", toolTip: "<h3>Controller 1</h3>:' . ${'Selected_' . $i} . '" }';
        if ($i < $loopNo) {
            echo ',';
        }
    }
  ?>
];

$(document).ready(function() {
  // then reference the areas data
  $("img").mapster({
    showToolTip: true,
    toolTipContainer: '<div class="map_popup"></div>',
    singleSelect: true,
    clickNavigate: true,
    mapKey: "data-key",
    fill: true,
    areas: areasData
  });
});

嗯,投票失败者解释为什么?谢谢