이 글은 여러분의 참고를 위해 일반적인 jQuery 개발 기술에 대해 매우 상세한 글을 정리했습니다.
1. 페이지 요소에 대한 참고사항
jquery의 $()를 통한 요소 참조에는 id, 클래스, 요소 이름, 요소의 계층적 관계, dom 또는 xpath 조건 등과 같은 메소드가 포함되며, 반환되는 개체는 jquery 개체(컬렉션 개체)이므로 dom 정의 메서드를 직접 호출합니다.
2. jQuery 객체와 DOM 객체의 변환
jquery 객체만 jquery에서 정의한 메서드를 사용할 수 있습니다. dom 객체와 jquery 객체 사이에는 차이점이 있습니다. 메서드를 호출할 때 dom 객체에서 작업하는지 jquery 객체에서 작업하는지 주의해야 합니다.
일반 DOM 객체는 일반적으로 $()를 통해 jQuery 객체로 변환될 수 있습니다.
예: $(document.getElementById("msg"))는 jquery 객체이며 jquery 메서드를 사용할 수 있습니다.
jquery 객체 자체가 컬렉션이기 때문입니다. 따라서 jquery 객체를 dom 객체로 변환하려면 항목 중 하나를 가져와야 하며 일반적으로 인덱스를 통해 검색할 수 있습니다.
예: $("#msg")[0], $("div").eq(1)[0], $("div").get()[1], $("td")[ 5 ] 이들은 dom 개체이며 dom에서 메서드를 사용할 수 있지만 더 이상 Jquery 메서드를 사용할 수 없습니다.
다음 표기법은 모두 맞습니다.
코드는 다음과 같습니다.
$("#msg").html(); $("#msg")[0].innerHTML; $("#msg").eq(0)[0].innerHTML; $("#msg").get(0).innerHTML;
3. jQuery 컬렉션의 항목을 가져오는 방법
획득한 요소 집합의 경우 eq 또는 get(n) 메서드나 인덱스 번호를 사용하여 항목(인덱스로 지정)을 얻을 수 있습니다. eq는 jquery 객체를 반환하고 get(n) 및 인덱스를 반환합니다. dom 요소 객체를 반환합니다. jquery 객체의 경우 jquery 메서드만 사용할 수 있고 dom 객체의 경우 dom 메서드만 사용할 수 있습니다. 예를 들어 세 번째 dc6dce4a544fdca2df29d5ac0ea9906b 요소의 내용을 가져오려고 합니다. 두 가지 방법이 있습니다:
$(“div”).eq(2).html(); //调用jquery对象的方法 $(“div”).get(2).innerHTML; //调用dom的方法属性
4. 동일한 함수로 set과 get을 구현합니다.
이는 주로 다음을 포함하여 Jquery의 다양한 메소드에 해당됩니다.
코드는 다음과 같습니다.
$(“#msg”).html(); //返回id为msg的元素节点的html内容。 $(“#msg”).html(“<b>new content</b>”); //将“<b>new content</b>” 作为html串写入id为msg的元素节点内容中,页面显示粗体的new content $(“#msg”).text(); //返回id为msg的元素节点的文本内容。 $(“#msg”).text(“<b>new content</b>”); //将“<b>new content</b>” 作为普通文本串写入id为msg的元素节点内容中,页面显示<b>new content</b> $(“#msg”).height(); //返回id为msg的元素的高度 $(“#msg”).height(“300″); //将id为msg的元素的高度设为300 $(“#msg”).width(); //返回id为msg的元素的宽度 $(“#msg”).width(“300″); //将id为msg的元素的宽度设为300 $(“input”).val(“); //返回表单输入框的value值 $(“input”).val(“test”); //将表单输入框的value值设为test $(“#msg”).click(); //触发id为msg的元素的单击事件 $(“#msg”).click(fn); //为id为msg的元素单击事件添加函数
마찬가지로, 흐림, 초점, 선택 및 제출 이벤트에는 두 가지 호출 방법이 있을 수 있습니다
5. 수집 처리 기능
jquery에서 반환된 컬렉션 콘텐츠의 경우 이를 직접 반복하여 각 개체를 개별적으로 처리할 필요가 없습니다. jquery는 컬렉션을 처리하는 매우 편리한 방법을 제공합니다.
두 가지 양식이 포함됩니다.
코드는 다음과 같습니다.
$(“p”).each(function(i){this.style.color=['#f00','#0f0','#00f'][ i ]}) //为索引分别为0,1,2的p元素分别设定不同的字体颜色。 $(“tr”).each(function(i){this.style.backgroundColor=['#ccc','#fff'][i%2]}) //实现表格的隔行换色效果 www.222gs.com $(“p”).click(function(){alert($(this).html())}) //为每个p元素增加了click事件,单击某个p元素则弹出其内容
6. 필요한 기능 확장
코드는 다음과 같습니다.
$.extend({ min: function(a, b){return a < b?a:b; }, max: function(a, b){return a > b?a:b; } }); //为jquery扩展了min,max两个方法
확장된 메소드 사용("$.methodname"을 통해 호출됨):
alert(“a=10,b=20,max=”+$.max(10,20)+”,min=”+$.min(10,20));
7. 지원 방법 연결
소위 연속 쓰기란 jquery 객체에 대해 다양한 메서드를 지속적으로 호출할 수 있다는 의미입니다.
예:
코드는 다음과 같습니다.
$(“p”).click(function(){alert($(this).html())}) .mouseover(function(){alert(‘mouse over event')}) .each(function(i){this.style.color=['#f00','#0f0','#00f'][ i ]});
8. 조작 요소 스타일
주로 다음과 같은 방법이 포함됩니다.
코드는 다음과 같습니다.
$(“#msg”).css(“background”); //返回元素的背景颜色 $(“#msg”).css(“background”,”#ccc”) //设定元素背景为灰色 $(“#msg”).height(300); $(“#msg”).width(“200″); //设定宽高 $(“#msg”).css({ color: “red”, background: “blue” });//以名值对的形式设定样式 $(“#msg”).addClass(“select”); //为元素增加名称为select的class $(“#msg”).removeClass(“select”); //删除元素名称为select的class $(“#msg”).toggleClass(“select”); //如果存在(不存在)就删除(添加)名称为select的class
9. 이벤트 처리 기능 완성
Jquery는 다양한 이벤트 처리 방법을 제공합니다. html 요소에 직접 이벤트를 작성할 필요는 없지만 jquery를 통해 얻은 객체에 이벤트를 직접 추가할 수 있습니다.
예:
코드는 다음과 같습니다.
$(“#msg”).click(function(){alert(“good”)}) //为元素添加了单击事件 $(“p”).click(function(i){this.style.color=['#f00','#0f0','#00f'][ i ]}) //为三个不同的p元素单击事件分别设定不同的处理
jQuery의 여러 사용자 정의 이벤트:
(1)hover(fn1,fn2): 호버 이벤트(마우스가 개체 위로 이동하여 개체 밖으로 이동)를 시뮬레이션하는 메서드입니다. 일치하는 요소 위로 마우스를 이동하면 첫 번째로 지정된 기능이 트리거됩니다. 마우스가 이 요소 밖으로 이동하면 지정된 두 번째 기능이 트리거됩니다.
코드는 다음과 같습니다.
//当鼠标放在表格的某行上时将class置为over,离开时置为out。 $(“tr”).hover(function(){ $(this).addClass(“over”); }, function(){ $(this).addClass(“out”); });
(2) Ready(fn): DOM이 로드되고 쿼리 및 조작 준비가 되었을 때 실행될 함수를 바인딩합니다.
코드는 다음과 같습니다.
$(document).ready(function(){alert(“Load Success”)}) //页面加载完毕提示“Load Success”,相当于onload事件,与$(fn)等价
(3)ggle(evenFn,oddFn): 클릭할 때마다 호출되는 함수를 전환합니다. 일치하는 요소를 클릭하면 지정된 첫 번째 기능이 트리거되고 동일한 요소를 다시 클릭하면 지정된 두 번째 기능이 트리거됩니다. 이후 클릭할 때마다 이 두 함수에 대한 호출이 차례로 반복됩니다.
코드는 다음과 같습니다.
//每次点击时轮换添加和删除名为selected的class。 $(“p”).toggle(function(){ $(this).addClass(“selected”); },function(){ $(this).removeClass(“selected”); });
(4) Trigger(eventtype): 일치하는 각 요소에서 특정 유형의 이벤트를 트리거합니다.
예:
$("p").trigger("click"); //모든 p 요소의 클릭 이벤트를 트리거합니다.
(5) 바인딩(eventtype,fn), unbind(eventtype): 이벤트 바인딩 및 바인딩 해제
일치하는 각 요소에서 바인딩된 이벤트를 제거(추가)합니다.
예:
코드는 다음과 같습니다.
$(“p”).bind(“click”, function(){alert($(this).text());}); //为每个p元素添加单击事件 $(“p”).unbind(); //删除所有p元素上的所有事件 $(“p”).unbind(“click”) //删除所有p元素上的单击事件
10、几个实用特效功能
其中toggle()和slidetoggle()方法提供了状态切换功能。
如toggle()方法包括了hide()和show()方法。
slideToggle()方法包括了slideDown()和slideUp方法。
11、几个有用的jQuery方法
$.browser.浏览器类型:检测浏览器类型。有效参数:safari, opera, msie, mozilla。如检测是否ie:$.browser.isie,是ie浏览器则返回true。
$.each(obj, fn):通用的迭代函数。可用于近似地迭代对象和数组(代替循环)。
如
代码如下:
$.each( [0,1,2], function(i, n){ alert( “Item #” + i + “: ” + n ); });
等价于:
代码如下:
var tempArr=[0,1,2]; for(var i=0;i<tempArr.length;i++){ alert(“Item #”+i+”: “+tempArr[ i ]); }
也可以处理json数据,如
$.each( { name: “John”, lang: “JS” }, function(i, n){ alert( “Name: ” + i + “, Value: ” + n ); });
结果为:
Name:name, Value:John
Name:lang, Value:JS
$.extend(target,prop1,propN):用一个或多个其他对象来扩展一个对象,返回这个被扩展的对象。这是jquery实现的继承方式。
如:
$.extend(settings, options); //合并settings和options,并将合并结果返回settings中,相当于options继承setting并将继承结果保存在setting中。 var settings = $.extend({}, defaults, options); //合并defaults和options,并将合并结果返回到setting中而不覆盖default内容。
可以有多个参数(合并多项并返回)
$.map(array, fn):数组映射。把一个数组中的项目(处理转换后)保存到到另一个新数组中,并返回生成的新数组。
如:
var tempArr=$.map( [0,1,2], function(i){ return i + 4; }); tempArr内容为:[4,5,6] var tempArr=$.map( [0,1,2], function(i){ return i > 0 ? i + 1 : null; }); tempArr内容为:[2,3] $.merge(arr1,arr2):合并两个数组并删除其中重复的项目。
如:$.merge( [0,1,2], [2,3,4] ) //返回[0,1,2,3,4]
$.trim(str):删除字符串两端的空白字符。
如:$.trim(” hello, how are you? “); //返回”hello,how are you? ”
12、解决自定义方法或其他类库与jQuery的冲突
很多时候我们自己定义了$(id)方法来获取一个元素,或者其他的一些js类库如prototype也都定义了$方法,如果同时把这些内容放在一起就会引起变量方法定义冲突,Jquery对此专门提供了方法用于解决此问题。
使 用jquery中的jQuery.noConflict();方法即可把变量$的控制权让渡给第一个实现它的那个库或之前自定义的$方法。之后应用 Jquery的时候只要将所有的$换成jQuery即可,如原来引用对象方法$(“#msg”)改为jQuery(“#msg”)。
如:
代码如下:
jQuery.noConflict(); // 开始使用jQuery jQuery(“div p”).hide(); // 使用其他库的 $() $(“content”).style.display = ‘none';
jquery开发过程中经验丰富可以提高开发技巧,所以大家一定要注意平时经验的积累,希望本文所述对大家学习有所帮助。