본 글의 예시는 jQuery의 탭 전환 효과에 대한 간단한 시연으로, 전적으로 저의 생각과 구현 과정이며, 참고용으로 공유합니다. 세부 내용은 다음과 같습니다.
처음에 내 HTML 코드 프레임은 다음과 같았습니다.
<div class="tabs"> <ul> <li class="acss" data-box="#panel-1">标签1</li> <li class="bcss" data-box="#panel-2">标签2</li> <li class="bcss" data-box="#panel-3">标签3</li> </ul> <div id="panel-1">内容111111</div> <div id="panel-2" style="display:none;">内容222222</div> <div id="panel-3" style="display:none;">内容333333</div> </div>
나중에 다음으로 변경되었습니다.
<dl class="tabs"> <dt> <a class="acss" href="#panel-1">标签1</a> <a class="bcss" href="#panel-2">标签2</a> <a class="bcss" href="#panel-3">标签3</a> </dt> <dd id="panel-1">内容1</dd> <dd id="panel-2" style="display:none;">内容2</dd> <dd id="panel-3" style="display:none;">内容3</dd> </dl>
이렇게 변경한 이유는 페이지 레이아웃에서 dl dt dd가 div ul li보다 덜 사용되어 더 나은 격리를 달성할 수 있다고 생각하기 때문입니다. js를 사용하여 dl dt dd 객체를 작동하면 페이지의 다른 요소에 미치는 영향이 줄어듭니다. 또한 li 태그의 data-box 속성을 사용자 정의할 필요가 없습니다. 이는 페이지에 더 가깝습니다. 글쓰기 기준. 그리고 전체적인 느낌은 위의 것보다 이 구조가 더 좋습니다.
플러그인 구현 코드는 다음과 같습니다.
(function ($) { $.fn.Tabs = function (options) { //默认参数设置 var settings = { beforeCss: "bcss", //激活前样式名 afterCss: "acss", //激活后样式名 model: "mouseover" //切换方式("mouseover"或者"click") }; //不为空,则合并参数 if (options) $.extend(settings, options); //获取a标签集合 var arr_a = $("> dt > a", this); //给a标签分别绑定事件 arr_a.each(function () { $(this).bind(settings.model, function (event) { //去除a标签的锚点跳转 event.preventDefault(); //样式控制 $(this).removeClass().addClass(settings.afterCss) .siblings("a").removeClass().addClass(settings.beforeCss); //隐藏与显示控制 var dd_id = $(this).attr("href"); $(dd_id).show().siblings("dd").hide(); }); }); //遵循链式原则 return this.each(function () { }); }; })(jQuery);
가벼워진다고 하는 이유는 코드의 양이 정말 작고 매우 간단하기 때문입니다. 댓글이 추가되었습니다. 모두가 이해할 수 있다고 믿습니다.
설정의 모델을 사용하여 전환 방법을 제어합니다.
처음에는 마우스 슬라이드인 전환을 구현하기 위해 hover를 사용하고 싶었지만 hover가 바인드 바인딩을 지원하지 않는 것을 발견했습니다. hover는 mouseover 이벤트를 캡슐화하는 jquery의 산물이므로 실제 이벤트가 아니므로 바인딩될 수 없습니다.
데모는 다음과 같습니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <style type="text/css"> * { margin: 0; padding: 0; } .tabs { width: 504px; margin: 50px auto; } .acss,.bcss { text-decoration:none; line-height: 35px; font-size: 14px; padding:8px 15px; } .bcss { background-color: #D4D4D4; border-bottom:1px solid white; } .acss { background-color: orange; border-bottom:1px solid orange; } .tabs dd { width: 500px; height: 300px; border: 1px solid orange; text-align: center; line-height: 300px; } </style> </head> <body> <dl class="tabs" id="tabs1"> <dt> <a class="acss" href="#panel-1">标签1</a> <a class="bcss" href="#panel-2">标签2</a> <a class="bcss" href="#panel-3">标签3</a> </dt> <dd id="panel-1"><h1>鼠标滑入切换</h1></dd> <dd id="panel-2" style="display:none;">内容2</dd> <dd id="panel-3" style="display:none;">内容3</dd> </dl> <dl class="tabs" id="tabs2"> <dt> <a class="acss" href="#panel-4">标签1</a><!--默认第一个激活--> <a class="bcss" href="#panel-5">标签2</a> <a class="bcss" href="#panel-6">标签3</a> </dt> <dd id="panel-4"><h1>鼠标点击切换</h1></dd><!--默认第一个显示--> <dd id="panel-5" style="display:none;">内容2</dd> <dd id="panel-6" style="display:none;">内容3</dd> </dl> <script src="../js/jquery-1.4.1.min.js" type="text/javascript"></script> <script src="../js/jquery.similar.Tabs.js" type="text/javascript"></script> <script type="text/javascript"> $("#tabs1").Tabs(); //默认鼠标滑入切换 $("#tabs2").Tabs({model:"click"}); //设置为点击切换 </script> </body> </html>
렌더링은 다음과 같습니다.
이 기사가 jquery 프로그래밍을 배우는 모든 사람에게 도움이 되기를 바랍니다.