jquery

2011-09-05 7 views
10

'daki .Max() öğesinin karşılığı nedir? Eşleştirilen öğelerin özelliklerinin maksimum değerini elde etmek için jquery ifadesini nasıl yazabileceğimizi merak ediyordum. LINQ jquery

dediğimiz böyle bir şey:

var maxHeight = list.Max(a=> a.Height); 

jquery bunu yapmanın en iyi yolu nedir? Bir kabın içine metin öğeleri: örnek olarak

en biz maksimum sayısal bütün değerini seçmek istediğiniz diyelim

tüm unsurları üzerinde bir halkaya sahip tabii
var allInputs = $("#container :text"); 
// how to get the max of parseInt(item.val())? 

bir seçenektir ama merak ediyorum jquery ile yapılacak bir sihir varsa bilin.

Saygılarımızla. olası çözümler

cevap

8

Buradaki tüm konuşmalara ve ağda yaptığım aramalara göre, (şu an) .max() ve .min() öğelerini hesaplamak için sağlam bir yerleşik jquery yolu olmadığını söyleyebiliriz. Bir seçici ile eşleşen öğelerin özellikleri. Aşağıdaki iki jquery sen (.max kullanmanız gerekiyorsa projenize ekleyebilir fonksiyonlar) ve .min ile geldi İgor önerdi itibaren

() işlevleri tekrar tekrar:

$.fn.max = function(selector) { 
    return Math.max.apply(null, this.map(function(index, el) { return selector.apply(el); }).get()); 
} 

$.fn.min = function(selector) { 
    return Math.min.apply(null, this.map(function(index, el) { return selector.apply(el); }).get()); 
} 

// Usage: 

var maxWidth = $("a").max(function() {return $(this).width(); }); 
var minWidth = $("a").min(function() {return $(this).width(); }); 

Bunu yaparak max alabilir:: aşağıdaki yapabileceğini ben http://www.jinqjs.com kullanma jinqJs açık kaynak projesinin yazarıyım http://jsfiddle.net/NF7v7/3/

10

Bir sonuca sonra Math.maxmap fonksiyonunu ve kullanmaktır: o bir satır yazılmış olabilir tabi

var values = $.map($("input:text"), function(el, index) { return parseInt($(el).val()); }); 
var max = Math.max.apply(null, values); 

edin.

keman: http://jsfiddle.net/WuVLr/1/

GÜNCELLEME: Alternatif

bu şekilde map uygulayabilirsiniz:

var values = $("input:text").map(function(index, el) { return parseInt($(el).val()); }).get(); 
+0

Neden '$ .map()' ve '.map()'? –

+0

Yanıt eklendi, ancak çok daha kısa değil –

+0

(docs) (http://api.jquery.com/jQuery.map/) doğru, dizi gibi nesneleri ($ gibi $) okuyorsanız : metin ') ') $ .map’e geçirilmeden önce gerçek dizilere dönüştürülmelidir. Öte yandan '.map() ', jQuery nesneleri için özel olarak tasarlanmıştır. Bu, '.map()' ın burada daha iyi bir seçenek olduğunu ima eder ... –

0

Bu bir dizi kullanarak bunun için doğrudan olmayan çözüm olabilir:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
    <head> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       var mySizes=new Array(); 
       $("input[type=text]").each(
        function(intIndex){ 
         mySizes[intIndex] = $(this).val().length; 
        }); 
       var largest = mySizes.sort(function(a,b){return a - b}).slice(-1); 
       alert("The maximun length is: " + largest); 
      }); 
     </script> 
    </head> 
<body> 
    <input type="text" value="Test"id="1"/> 
    <input type="text" value="Goodbye"id="2"/> 
    <input type="text" value="Bye"id="3"/> 
    <input type="text" value="Hello"id="4"/> 
    <input type="text" value="Hello world!"id="5"/> 
    <input type="text" value="Hi"id="6"/> 
</body> 
</html> 

Saygılarımızla

0

: burada bir demo izleyin

var result = jinqJs().from([2,5,4,6,7,8,3]).orderBy([{sort: 'desc'}]).top(1).select(); 

veya bunu yaparak dakika:

var result = jinqJs().from([2,5,4,6,7,8,3]).orderBy([{sort: 'desc'}]).bottom(1).select();