jQuery實現兩個按鈕的位置互換


  頁面上有2個按鈕A和B.點擊按鈕A和按鈕B互換位置 ,點擊按鈕B和按鈕A互換位置.應該如何實現?

  html代碼如下:

<body>
        <!--頁面上有2個按鈕A和B.
          點擊按鈕A和按鈕B互換位置 
          點擊按鈕B和按鈕A互換位置-->
          <input type="button" value="按鈕A" id="a"/>
          <input type="button" value="按鈕B" id="b"/>
    </body>

  基本思路應該是在給按鈕A和按鈕B分別加上click事件,在點擊時候發生位置的改變.但是主要的問題在於:實際上按鈕的位置不是固定的..因此采用insertAfter或者insertBefore的時候需要注意現在發生點擊事件按鈕所處的位置.解決這個問題有兩種思路,其中第二種思路不需要考慮按鈕的位置問題:

  第一種思路是直接進行判斷.如果當前的按鈕在另外一個按鈕的前面,就插入到另外一個按鈕的后面去.(這里采用的是父類結點的append方法實現),如果在另外一個按鈕的后面,就插入到另外一個按鈕的前面(采用父類結點的prepend方法實現).那么該如何判斷是在另外一個按鈕的后面還是前面呢?采用的是jQuery對象的is方法,先用nextAll方法,獲取所有在當前按鈕后面的元素,而is方法會判斷是否有符合過濾條件的元素.這里要提到is和has的區別.is返回的是判斷結果,是一個boolean類型的值,而has則返回的是符合過濾條件的元素,是一個jQuery對象!!有了這個思路,代碼如下:

<script>
            $(function() {
                $("#a").click(function() {
//                    alert($x.nextAll().has("#b")); has方法返回的是jQuery!!
                    if($(this).nextAll().is("#b")) {
                        $("body").append($(this));
                    }
                    else {
                        $("body").prepend($(this));
                    }
                });
                $("#b").click(function() {
                    if($(this).nextAll().is("#a")) {
                        $("body").append($(this));
                    }
                    else {
                        $("body").prepend($(this));
                    }
                });
            });
        </script>

  第二種思路,則更為簡單,把按鈕A和按鈕B的差異拋開,實際上所要做的操作就是將body中的第一個按鈕移到最后面(畢竟,該問題的環境下只有兩個按鈕),有了這個思路,代碼量將會大為減少:

<script>
            $(function() {
                $("input").click(function() {
                    $("body").append($("input:first"));
                });
            });
        </script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM