7

私はliそれらの中にいくつかの要素を持っています、いくつかはli属性data-brandIdを持っています、そしてそれらのいくつかはこの属性を持っていません。ul私はそれを次のようにフィルタリングしている親を持っています:

var selectedLis = new Array();
$('ul').children('li').each(function(){
    if($(this).attr(attribute) != null) {
        selectedLis.push($(this));
    }
});

これを達成するためのより良い方法はありますか?などを使ってみfilterたい?

アップデート:

私は得ていますTypeError: $(...).data(...) is undefined

レンダリングされたHTMLは次のとおりです。

<li data-entityid="WF/008/DAM" class="dropdownli filterItem">&nbsp;&nbsp;&nbsp;
    <input type="checkbox" data-entityid="WF/008/DAM" value="WF/008/DAM/014" name="damBrand">
    <label>E&amp;W Portfolio</label>
</li>

これは私にエラーを与えています:

var lis = $('ul[name=damBrandMenu]').children('li').filter(function(){
    return $(this).data('entityId').length;
});

また、にdata-entityIdがliなく、代わりに、HTMLでわかるように、liの子であるinput [type="checkbox"]にこの属性があると言います。では、フィルタリングの方法は何でしょうか?それは...ですか:

var lis = $('ul[name=damBrandMenu]').children('li').filter(function(){
    return $('> input[type="checkbox"]', this).data('entityid').length;
});

私も試しました:$(this).attr('data-entityId').length;$('> input[type="checkbox"]', this).attr('data-entityId').length;、しかし、それらも機能していません。同じエラーが発生しています。TypeError: $(...).attr(...) is undefined

4

5 に答える 5

17
var selectedLis = $('ul').children('li[data-brandId]');

またはフィルター付き:

var selectedLis = $('ul').children('li').filter(function() {
    return $(this).data('brandId');
});
于 2012-12-26T08:49:31.633 に答える
4
$('ul > li').filter(function() {
    return this.dataset.brandId
});
于 2012-12-26T08:49:11.290 に答える
2
var selectedLis = $('ul li').filter(function() {
    return $(this).data('brandId').length;
});
于 2012-12-26T08:51:40.567 に答える
2
var attribute = 'data-brandId';
var selectedLis = $('ul > li['+attribute+']');
于 2012-12-26T08:49:58.100 に答える
0

これには、JQuery属性フィルターを次のように使用できます。

var selectedLis = $("li[data-brandId]");
于 2016-02-16T09:50:34.470 に答える