2015-12-08 112 views
-2

我想使用2個數據屬性對div進行排序。我用這個代碼如何使用2(!)數據屬性對div進行排序?

<div class='fff' data-player="77" data-revision="0">Oxlade</div> 
<div class="fff" data-player="85" data-revision="0">Draxler</div> 
<div class="fff" data-player="80" data-revision="4">Kamara</div> 

我tryed這個腳本:

var divList = $(".fff"); 
divList.sort(function(a, b){ return $(b).data("player") $(a).data("player")}); 
divList.sort(function(a, b){ return $(b).data("revision") $(a).data("revision")}); 

$("#spelerss").html(divList); 

但它只能在各種數據的球員,而不是數據的修訂?! 所以首先他要修改排序, 卡馬拉應該是排序後首先是因爲他的「修訂版」比別人高,由德拉克斯勒以下,因爲他比Oxlade較高,在去年Oxlade

+0

雖然我們可以爲您做這件事,但這不是本網站的內容;你應該發佈你自己嘗試的解決方案,解釋它出錯的地方(以及它出錯的地方)以及你卡在哪裏。我們*不是*在這裏爲*你做你的工作*,而是幫助你解決和解決你的代碼問題。 –

+0

@DavidThomas完成了,你現在可以幫忙嗎? –

+0

我懶得發表一些代碼,但我會建議比較'a.data-player'和'b.data-player'的排序邏輯(減去它們,因爲它們都是數字),然後在返回一個正數,負數或0,檢查你是否返回0.如果你將返回0,那麼比較'a.data-revision'和'b.data-revision'。如果您需要顛倒任一順序,則乘以「-1」,它將顛倒您正在排序的任何字段的排序順序。 – Ultimater

回答

0

作爲@穆罕默德 - 優素福排序兩次提到你可以使用.sort()功能,但其他答案中的邏輯有點不合適。

調用應該像...

$('.fff').sort(function (a, b) { 
     return ($(b).data('revision')+ "" + $(b).data('player')) - ($(a).data('revision')+ "" + $(a).data('player')); 
    }).appendTo('body'); 

這是因爲,這樣做另一個FOLLOWED一個排序只是運行一個新的排序的事實。您需要進行某種連接才能使排序正常工作。

Working fiddle

0

就可以使用。排序()

$('.fff').sort(function (a, b) { 
    return parseInt($(b).attr('data-player')) - parseInt($(a).attr('data-player')); 
}).appendTo('body'); 

Working Demo

注:此代碼將排序從更高的數據播放器來降低數據的球員

下一個代碼將數據修改

$('.fff').sort(function (a, b) { 
    return parseInt($(b).attr('data-revision')) - parseInt($(a).attr('data-revision')); 
}).appendTo('body'); 

Working Demo

排序爲(後問題更新)

$(".fff").sort(function (a, b) {return parseInt($(b).attr('data-player')) - parseInt($(a).attr('data-player')); 
    }).sort(function (a, b) { 
      return parseInt($(b).attr('data-revision')) - parseInt($(a).attr('data-revision')); 
    }).appendTo('body'); 

Working Demo

+0

是的,但只會對「數據播放器」進行排序 –

+0

如何首先按修訂排序然後按數據修訂排序? –

+0

@ J.terWeele更新了答案?? –

相關問題