문제

누구든지 목록에 항목을 추가하는 방법을 알고 있지만 jQuery를 사용하여 알파벳순으로 주문하도록하십시오. 드롭 다운에서 목록 끝까지 항목을 추가하는 다음 코드가 있습니다.

$("#projectList").append(
    "<li>"
    + $("#Projects :selected").text()
    + " <span class='removeProject' projectId='" + $("#Projects").val() + "'>Remove</span>"
    + "</li>"
);

그러나 기존 목록의 끝에 추가하는 대신 적절한 장소에 삽입 할 수 있기를 원합니다.

모든 도움이 감사합니다! 감사!

도움이 되었습니까?

해결책

나는 이것이 효과가 있다고 생각한다 :

var new = $(
    "<li>"
    + $("#Projects :selected").text()
    + " <span class='removeProject' projectId='" + $("#Projects").val() + "'>Remove</span>"
    + "</li>"
);

var firstafteritem = $("#projectList").children().filter( function () {
    return ($(this).text() > $("#Projects :selected").text())
} ).eq(0);

if (firstafteritem.length > 0) firstafteritem.before(new);
else                           $("#projectList").append(new);

의 가치 firstafteritem 추가 한 후 텍스트 값이있는 첫 번째 목록 항목이됩니다. (또는 마지막이라면 없음) 그런 다음 IF/Else는 해당 항목 앞이나 목록의 끝에 삽입됩니다.

(물론 이것은 목록의 값이 이미 순서대로 가정합니다.)

다른 팁

<script type="text/javascript">
     $(document).ready(function(){
     $("#doctype li:first").before("<li><a href='intranet/library'>All documents</a></li>");
     });
</script>

나는 적어도 핵심 jquery와 쉬운 방법이 있다고 생각하지 않습니다.

내 머리 꼭대기에서 테스트되지 않은, 목록이 짧으면 이와 같은 단순한 것이 효과가있을 수 있습니다 (O (n) 이후)

var liArr=$("#projectList li").get();
var newText=$("#Projects :selected").text();
var newEle=$("<li>"
    + newText
    + " <span class='removeProject' projectId='" + $("#Projects").val() + "'>Remove</span>"
    + "</li>");
for(var li=0; li<liArr.length; li++) {
  if(newText<liArr[li].innerHTML) {
     $("#projectList").get(0).insertBefore(newEle,liArr[li]);
     newEle=null;
     break;
     } 
  }
if(newEle) { $("#projectList").append(newEle); }

목록을 구문 분석하여 항목을 추가 해야하는 위치를 확인한 다음 After () jQuery 함수를 사용하여 항목을 추가 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top