不断查找下一个元素 jQuery/JS


Continuously finding the next element jQuery/JS

我正在尝试从跨度内的表中提取每个字母。这是我所拥有的:

<?php
    $y='A';
    $c=0;
    $z=0;
    echo "<table id=tableexample>";
    while ($z<100){
        $c=0;
        echo "<tr>";
        while ($c<3) {
            if (isset($names[$z])){              
                echo "<td><span id=boldinfo>".$y."</span><br></td>";    
            }      
            $y++;
            $c++;
            $z++;
        }
    }
    echo("</tr>'n");
    echo "</table>";
?>

所以我有多个重复的span类,我想使用 jQuery/JS 来解析它们并获取每个值。

这是我的JS:

$(document).ready(function () {
    $('.c3-legend-item-event').mouseover(function(){
        var colorKeyLength = $(this).closest("g").attr('class').length;
        var colorKey = $(this).closest("g").attr('class')[colorKeyLength-1];
        var colorKey2 = '';
        while (colorKey != colorKey2){
            colorKey2 = $( "table" ).find('#boldinfo').text();
        }
    });
});

在 JS 中,变量colorKey将是 A、B,..,C 或 Z。在 PHP 中,变量 y 执行相同的操作,并在循环时增加其字母。

我的问题是能够通过具有不同文本的相同跨度类的循环进行解析。我不知道该怎么说。我知道我可以使用 next(),但我不确定如何通过多次迭代来做到这一点。我试图使它,当我将鼠标悬停在某物上时,包含与colorKey相同字母的单元格将以与其他单元格不同的颜色突出显示。

如果您确定只会查看<span id="boldinfo"></span>格式的跨度(我鼓励在这里使用 class 而不是 id),那么像 $("span[id=boldinfo]") 这样的简单 jQuery 选择器可用于遍历所有这些跨度。

属性id应该与唯一元素相关,您应该改用属性class。设置不带引号的属性也不是一个好的做法(它仅在您有一个属性时才有效)。以下是修改:

<?php
    $y = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $z = 0;
    // could also be "<table id='"table'">" 
    echo '<table id="tableexample" ' .
    'cellpadding="0" cellspacing="0" border="0" ' .
    'style="width:100%;">';
    while ($z < 100)
    {
        $c = 0;
        echo '<tr>';
        while ($c < 3)
        {
            if (isset($names[$z]))
            {              
                echo
                '<td align="left" valign="top">' .
                  '<span class="boldinfo">' .
                  $y[$z] .
                  '</span>' .
                '</td>';    
            }
            if ($z >= strlen($y) - 1)
            { $z = 0; }
            else
            { $z++; }
            $c++;
        }
        echo '</tr>';
    }
    echo "</table>";
?>

然后我不确定你想用你的JS代码做什么,但这是我的新版本:

jQuery(document).ready(function($)
{
    $('.c3-legend-item-event').mouseover(function()
    {
        var colorKeyLength = $(this).closest("g").attr('class').length;
        var colorKey = $(this).closest("g").attr('class')[colorKeyLength-1];
        var colorKey2 = '';
        var spans = $('#tableexample .boldinfo');
        spans.each(function(index)
        {
            var txt = $(this).text();
            if (colorKey == txt)
            {
                // do something
                return false;
            }
        });
    });
});

希望对您有所帮助!