如何根据两个数据属性值查找元素?

时间:2013-08-05 09:33:54

标签: javascript jquery asp.net

 <ul>
    <li id="RadListBox1_i2" class="rlbItem ui-draggable">

        <div class="ui-draggable ui-state-default" data-shortid="1007">
        <em>ProductId: </em>
        <span>110-01-070-10</span>
        <br>
        <em>ShortID: </em>
        <span class="ShortID" data-shortid="1007">1007</span>
        <br>
        <em>Product Defaul cat: </em>
        <span class="spanDefCat" data-defcat="334">334</span>
        </div>
        </span>
        </li>
        <li id="RadListBox1_i3" class="rlbItem ui-draggable">
        <li id="RadListBox1_i4" class="rlbItem ui-draggable">

    </ul>

我需要在

之前找到我正在使用此功能的元素
$("#AllProducts li:contains('ShortID:" + Product + "'):contains('" + iCategory + "')").addClass("backDefaultCat");

但是现在你看到我正在使用data-shortid = X sow我需要检查item是否有data-shortid = X和data-defcat = Y

有些人认为是这样的

  $("span.ShortID[data-shortid=" + Product + "] span.spanDefCat[data-defcat=" + iCategory + "]").parents("li:first").addClass("backDefaultCat"); 

我可以将它合并。

2 个答案:

答案 0 :(得分:2)

尝试

$("#AllProducts li").filter(function(){
    return $(this).has('[data-shortid="' + Product + '"]').length > 0 && $(this).has('[data-defcat="' + iCategory + '"]').length > 0
}).addClass("backDefaultCat");

演示:Fiddle

或者

$('#AllProducts li:has(span.ShortID[data-shortid="' + Product + '"]):has(span.spanDefCat[data-defcat="' + iCategory + '"])').addClass("backDefaultCat");

演示:Fiddle

答案 1 :(得分:1)

尝试替换下面的行。刚刚添加了您忘记的,:)

$("span.ShortID[data-shortid=" + Product + "], span.spanDefCat[data-shortid=" + iCategory + "]").parents("li:first").addClass("backDefaultCat");

http://jsfiddle.net/SBhMV/7/

更新了您的jsFiddle,请检查。

http://jsfiddle.net/SBhMV/9/

再次更新