所有的CSS選擇器都能在jQuery里使用,比如$('[data-toggle^=button]')
。
事件綁定
jQuery的on
和off
分別用于綁定和禁用事件。
例如:
$('td').on("click", function (event) { // 綁定abc元素上的click事件,單擊時彈出
提示
alert(1);
});
$('td).off('click'); // 禁用abc元素上的click事件
對于Bootstrap框架,它對jQuery的on和off的使用稍有不同。它使用了另外一種語法
例如:
$(document).on('click.bs.carousel.data-api','td',function (e){};
$(document).off('.carousel.data-api');
上述的on在使用時,中間多了一個參數,而且選擇器變成了document。它的好處是只在document上綁定一個單擊事件,利用冒泡的機制,在單擊的時候檢查是否是td元素,如果是才處理。而前面我們把td作為選擇器的時候,一個頁面有多少td元素就會綁定多少個click事件,這樣性能會大大降低。
事件命名空間
事件后面都跟了一些字符串,我們簡單稱它們為帶有命名空間的事件。比如,你聲明如下這樣的代碼:
$('#abc').on("click.tomxu", function (event) {
alert(1);
});
一般別人觸發click事件,都是這樣做的:
$('#abc').trigger('click');
執行上述代碼,在click時,所有綁定的click事件回調都會被執行。但是如果觸發的時候,你不想影響其他click觸發代碼,這時候就可以只觸發自己定義的click事件,以求不會對別人綁定的click回調產生影響,這時可以這樣做。
$("#abc").trigger('click.tom.xu');
$.data()
很多JS插件里都使用了$(selector).data()方法,它的意思是收集指定元素上的所有以data-
開頭的自定義屬性,并合并成為一個對象字面量。
對于以data-
開頭的自定義屬性,它是HTML5新支持的語法。比如:
<div id="abc" data-role="aaa" data-toggle="toggle" data-xxx="tom"></div>
如果要獲取data-role
里aaa
這個值,則需要調用如下代碼:
$("'#abc").data("role");
如果是不帶參數的
$("'#abc").data();
則表示一次性將所有以data-
開頭的參數都收集起來,其結果和用如下方式聲明一個value變量是一樣的。
var value = {
role: 'aaa',
toggle: 'toggle',
xxx: 'tom'
};
Bootstrap中的很多JS插件都是利用了這個特性,在HTML元素上定義了一些必要的參數,比如要不要使用動畫、是否開啟鍵盤事件等。在分析JS插件的option選項參數時即可看到各個參數的詳細解釋。