【问题标题】:Workaround with deep hierarchies. jQuery (find, each, closest)具有深层层次结构的解决方法。 jQuery(查找,每个,最接近)
【发布时间】:2014-05-01 08:51:52
【问题描述】:

我有代码

<table id="financial101_tab1" class="dxrpControl_Moderno dxrpWithoutHeader_Moderno" style="border-collapse: separate; opacity: 1; margin-left: 0px;">

<tbody>
    <tr>
        <td id="financial101_tab1_RPC" class="dxrp dxrpcontent" style="padding: 6px 10px 10px; border-width: medium; border-style: …r-color: -moz-use-text-color; background-color: transparent;">
            <input id="BlockControlfinancial101_tab1ATI" type="hidden" value="1" name="BlockControlfinancial101_tab1ATI"></input>
            <div id="BlockControlfinancial101_tab1" class="dxtcLite_Moderno dxtc-top" style="">
                <ul id="BlockControlfinancial101_tab1_TC" class="dxtc-strip dxtc-stripContainer" style="padding: 3px 0px 0px; width: 624px;"></ul>
                <div id="BlockControlfinancial101_tab1_CC" class="dxtc-content" style="visibility: visible; width: 600px;"></div>
                <input type="hidden" name="BlockControlfinancial101_tab1_DXState" value="{"t":[]}"></input>
            </div>
            <b class="dx-clear"></b>
            <script id="dxss_1482507144" type="text/javascript"></script>
        </td>
    </tr>
</tbody>

有6张桌子,

我想按类名.dxrpControl_Moderno.dxrpWithoutHeader_Moderno 获取所有元素,因为它们在 6 t 表中是相同的,并且我想设置它的子元素 #BlockControlfinancial101_tab2_AT0background,已经有

$(".dxrpControl_Moderno.dxrpWithoutHeader_Moderno").each(function () {
            if ($(".dxrpControl_Moderno.dxrpWithoutHeader_Moderno").find(".dxtc-text.dx-vam").text() == "Гистограмма") {
                $(".dxrpControl_Moderno.dxrpWithoutHeader_Moderno").find("#BlockControlfinancial101_tab2_AT0").css('background', 'url(../../CustomStyleSource/icons/chart_bar_icon24.png) no-repeat center center');
            }
        });

很遗憾,它不起作用,有什么想法吗?

【问题讨论】:

    标签: jquery html arrays each


    【解决方案1】:

    您需要在每个循环内使用$(this) 来定位当前.dxrpControl_Moderno.dxrpWithoutHeader_Moderno

    $(".dxrpControl_Moderno.dxrpWithoutHeader_Moderno").each(function () {
        if ($(this).find(".dxtc-text.dx-vam").text().trim() == "Гистограмма") {
            $(this).find(".BlockControlfinancial101_tab2_AT0").css('background', 'url(../../CustomStyleSource/icons/chart_bar_icon24.png) no-repeat center center');
        }
    });
    

    另外,id 是唯一的,你应该使用 class 代替,所以你需要改变:

    id="BlockControlfinancial101_tab2_AT0"
    

    到:

    class="BlockControlfinancial101_tab2_AT0"
    

    为您的元素。

    【讨论】:

    • 为什么需要$(this).find("#BlockControlfinancial101_tab2_AT0")而不是$("#BlockControlfinancial101_tab2_AT0")就足够了
    • 应该是class,而不是id。
    • 我如何才能更深入地了解层次结构?像这样 1
    • @user3102504 .find() 可以带你从父元素到任何级别
    • 我用$(".dxrpControl_Moderno.dxrpWithoutHeader_Moderno").each(function () { if ($(this).find(".dxtc-text.dx-vam").text() == "Гистограмма") { alert("a");}}); 不行,不知道为什么hlp
    猜你喜欢
    • 2015-03-24
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多