JQuery真的很牛 (二)

來源:互聯網
上載者:User

  第四部分:JQuery的迭代

1):
如何判斷對象是否存在,JQuery選取器返回的是一個對象數組,調用text(),html() ,click() 之類方法的時候其實是對數組中每個元素迭代調用每個方法,因此即使通過id選擇的元素不存在也不會報錯,如果需要指定的id是否存在,應該寫:

   <script type="text/javascript">
        $(function () {
            var result = $("#btn12");
            if (result.length <= 0)
            { alert("沒有找到指定的按鈕"); }
            else {
               result.mouseover(function () { alert("移上來了。"); });
            }
        });
</script>
在body裡邊寫點這個就行啦:
<body>
<input type="button" id="btn1" class="waring" value="確定" />
<input type="button" id="btn2" class="waring" value="取消" />
</body>
2)節點的遍曆:
【1】.next()方法用於擷取節點之後的第一個同輩元素,例子如下:
在body中寫幾個div
<body>
<div>aaa</div>
<div>bbb</div>
<div>ccc</div>
<div>ddd</div>
</body>
 <script type="text/javascript">
        $(function () { $("div").click(function () { alert($(this).next().text()); }) });
    </script>
這樣就可以了在點擊每個div時都會顯示出它的下一個div的Text內容。

【2】而.nextAll()方法是把它後的所有內容顯示出來也包含在包含在它裡面的元素()

也可以給它再加上過濾器在.nextAll("div")也就是只顯示是div元素裡邊的內容。

那麼對於這個節點都給遍曆了有什麼用呢?
下面算個小用處吧:可以在點某個div時讓它後面的所有div的background變為紅色具體代碼如下:

$(function () { $("div").click(function () { $.each($(this).nextAll("div"), function () { $(this).css("background", "red"); }); }) });

注意上邊的其實不用$.each();因為對於JQuery中它會自動迭代因此只用如下所寫就可以啦:
$(function(){$("div").click(function(){$(this).nextAll("div").css("background","red");});});
【3】siblings();用於獲得所有的同輩的元素:不管是後邊的還是前邊的注意上邊的.nextAll().next()、專指的是在本元素的後面的元素。
$(function(){$("div").click(function(){$(this).css("background","red");$(this).siblings("div").css("backgroud","yellow");})});

【為顯示下JQuery的鏈式編程上面的代碼還可以這樣寫如下:$(function(){$("div").click(function(){$(this).css("background","red").siblings("div").css("backgroud","yellow");})});也就是把對於一個對象的事件都給它串到一起一直點下去都沒問題 。但為減少出錯還是一個一個寫比較安全。
】

                             
                        第五部分  過濾選取器
一個小部分:
1):  :first選取第一個元素。如:$("#div:first") 選取第一個<div>。
2):  :last選取最後一個元素。$("#div:last")選取最後一個<div>。
3):  :not (選取器)選取不滿足“選取器”條件的元素。
$("input:not(.myClass)") ,就是要選取樣式名不是myClass的<input>。
4):even ,:odd。選取索引是奇數,偶數的元素:$("input:even")選取索引是奇數的<input>

5)::eq(索引序號),gt(),lt()選取索引等於,大於,小於索引序號的元素,比如$("input:lt(5)")選取索引小於5的<input>

例子:表格隔行變色除標題外的行:代碼如下:
 <script type="text/javascript">
        $(function () {
            $("#test tr:first").css("fontSize", "36"); $("#test tr:last").css("color", "red"); $("#test tr:gt(0):lt(3)").css("fontSize", "20");
            $("#test tr:gt(0):even").css("background", "red");
            $("#test tr:gt(0):odd").css("background", "yellow");
        });
       
    </script>

6):不僅可以使用選取器進行絕對位置,還可以進行相對定位,只要在$()指定第二個參數第二個參數為相對的元素。$("ul",$(this)).css("background","red");
例子修改點擊行的所有tdr 背景色。代碼如下:
<script type="text/javascript">
        $(function () { $("#t1 tr").click(function () { $("td", $(this)).css("background","red"); }); });
    </script>
body中這樣寫就OK啦
<table id="t1">
<tr><td>sdfsd</td><td>sdfsdfsdf</td><td>sdfsdfsdfsd</td></tr>
<tr><td>枯枯頂替頂替頂替</td><td>極一奪奪在</td><td>sdfsdfsdfsd</td></tr>
</table>
二個小部分:

1)屬性過濾選取器:

$("div[id]"); 選取有id屬性的<div> ——$("div[div1]")

$("div[title=test]")選取title屬性為"test" 的div

$("input[name=abc]")也可以$("input[name!=test]")
2)表單對象選取器(過濾器)
$("#form1 :enable")選取id為form1的表單內所有啟用的元素。
$("#form1:disabled")選取id為form1的表單內所有禁用的元素。
$("input checked") 選取所有選中的元素(Radio.CheckBox)
$("select :selected")選取所有選中的選項元素(下拉式清單);
小例子:當把有的checkbox選中之後再點一按鈕時將其文本顯示出來:
在bodyk 這樣寫:
<body>
<input type="checkbox" value="北京"/>北京<br />
<input type="checkbox" value="南京"/>南京<br />
<input type="checkbox" value="東京"/>東京<br />
<input type="checkbox" value="西安"/>西安<br />
<input type="button" value="顯示選中文本" />
</body>

JQuery指令碼這樣寫:
 <script type="text/javascript">
        $(function () {
            $("input[value=顯示選中文本]").click(function () {
                alert($("input:checked").val());
            });
        });
    </script>
注意在$("input:checked"):兩邊一定不要有空格呀;並且這樣只會顯示出第一個選中的項這要用下$.each().迭代下。

body中這樣寫:
<body>
<input type="checkbox" name="names" value="孫業寶" />孫業寶<br />
<input type="checkbox" name="names" value="王丹丹" />王丹丹<br />
<input type="checkbox" name="names" value="章超" />章超<br />
<input type="checkbox" name="names" value="陳海波" />陳海波<br />
<p id="showname"></p>
</body>

而指令碼就這樣寫:
 <script type="text/javascript">
        $(function () {
            $("input[name=names]").click(function () {
                var arr = new Array();
                $("input[name=names]:checked").each(function (key, value) {
                    arr[key] = $(value).val();
                });
                $("#showname").text("你一共選擇了"+arr.length +"項"+arr.join(","));
            });
        });
    </script>
3)

$(":input") 選取所有<input>,<textarea>,<select>,<button>的元素。和
$("input")不一樣前者是所有的原來是input 的控制項全選取,而後者只選取
$(":text")與$("input[type=text]")等價只不過簡單用即選取所有單行文字框。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.