Schnelle Frage: Wie kann man ein div mit einer bestimmten Breite auswählen? Zum Beispiel haben wir 10 divs auf einer Seite, und ich möchte das auswählen, das eine Breite von 200px hat und etwas damit machen. Vielen Dank.
Antworten
Zu viele Anzeigen?Was JCOC611 gesagt hat:
var $theDivs = $('div').filter(function() { return $(this).width() === 200; });
Das würde Ihnen ein jQuery-Objekt mit allen übereinstimmenden (200px) DIVs darin bringen. Es wäre vielleicht nicht das schnellste Ding der Welt; es wäre wahrscheinlich besser, Ihre Seitenelemente direkter und expliziter zu identifizieren, wenn Sie können.
Tom Auger
Punkte
19076
Sie können auch die Pseudo-Selektoren von jQuery erweitern, wie folgt:
// Erweitern des jQuery ":"-Pseudo-Selektors um einen width() Test
$.extend( $.expr[':'], {
width: function ( element, index, selectorMatches ) {
var expr = selectorMatches[3].match( /^\s*([<>]?={0,1})?\s*(\d+)\s*$/ ),
elementWidth = $( element ).width(),
targetWidth, comparisonOperator;
if ( !expr ){
console.log( "Ungültiger Ausdruck" );
return false;
}
comparisonOperator = expr[1] || "==";
targetWidth = parseInt( expr[2] );
return eval( elementWidth + comparisonOperator + targetWidth );
}
});
// Gültige Ausdrücke sind:
// :width( 200 ), :width( = 200 ), :width( == 200 )
// :width( > 200 ), :width( >= 200 )
// :width( < 200 ), :width( <= 200 )
$('div:width( 200 )').hide();
Meiner Meinung nach macht das mehr Spaß als filter()
zu verwenden, aber jsperf zeigt, dass es nur ein wenig langsamer ist (4% langsamer).
Hier ist ein jsFiddle, mit dem Sie herumspielen können.