あなたのための速いもの。jQuery.comのセレクターを調べましたが、数値より大きいセレクターでフィルターする方法が見つかりませんでしたか?私はこれをしたい:
$("[level>'4']").hide();
私のhtmlは次のようになります:
<div id="1" level="4">Test</div>
それまたはその構文のようなものを使用して、4より大きいすべてのdivを非表示にするにはどうすればよいですか?4
あなたのための速いもの。jQuery.comのセレクターを調べましたが、数値より大きいセレクターでフィルターする方法が見つかりませんでしたか?私はこれをしたい:
$("[level>'4']").hide();
私のhtmlは次のようになります:
<div id="1" level="4">Test</div>
それまたはその構文のようなものを使用して、4より大きいすべてのdivを非表示にするにはどうすればよいですか?4
以下を試してください、
$("[level]").filter(function () {
return parseInt($(this).attr('level'), 10) > 4;
}).hide();
$('div').filter(function(){
return parseInt($(this).attr('level')) > 4);
});
別の埋め込み関数としてではなく、セレクターでチェックが行われるこの特定の機能も必要でした。必要以上のことをしたのかもしれませんが、これは、フィルター呼び出しごとに何かを記述するのではなく、セレクターを使用して Isotope で日付ベースのものをフィルターできるようになったことを意味します。
私が書いたものは、jQuery で疑似セレクターのものを使用しています。
// Hides elements with the attribute "index" that is greater than 4
$(':attrGT("index",4)').hide();
// Filter elements using Isotope with the attribute "data-starttime" that is less than or equal to 1234567890
$container.isotope({
filter: ':attrLTEq("data-starttime",1234567890)'
});
バージョン 1 の初期コードは次のとおりです (詳細なテストはまったく行っていませんが、これまでのところうまくいきました)。
(function ($) {
// Single function to do all the heavy lifting
function attrGTLTSelector(mode, obj, meta) {
var args,
objAttr,
checkAttr,
output = false;
if (typeof meta === 'object') {
args = meta;
} else {
if (meta.match(',')) {
args = meta.split(/["'\s]*,["'\s]*/);
} else {
args = [meta];
}
}
objAttr = parseInt($(obj).attr(args[0]), 10);
checkAttr = parseInt(args[1], 10);
switch (mode) {
case 'lt':
if (objAttr<checkAttr) output = true;
break;
case 'lte':
if (objAttr<=checkAttr) output = true;
break;
case 'gt':
if (objAttr>checkAttr) output = true;
break;
case 'gte':
if (objAttr>=checkAttr) output = true;
break;
}
if (window.console) if (console.log) console.log('attrGTLTSelector', objAttr, mode, checkAttr, output);
return output;
}
// Add custom pseudo selectors to jQuery
$.expr[':'].attrLT = function(obj, index, meta, stack){
return attrGTLTSelector('lt', obj, meta[3]);
};
$.expr[':'].attrGT = function(obj, index, meta, stack){
return attrGTLTSelector('gt', obj, meta[3]);
};
$.expr[':'].attrLTEq = function(obj, index, meta, stack){
return attrGTLTSelector('lte', obj, meta[3]);
};
$.expr[':'].attrGTEq = function(obj, index, meta, stack){
return attrGTLTSelector('gte', obj, meta[3]);
};
}(jQuery));
これを行うだけです:
$('[level]').each(function(){
var $this=$(ths);
var level = parseInt($this.attr('level'), 10);
if (level>4) $this.hide();
});