非常感谢您的回复。
我正在写一个jquery手风琴,但想知道我的标记和jquery是否正确..(与语义html保持一致)
我的第一个问题是在我正在使用它(JSFIDDLE example)的上下文中对于accourdion的正确语义html是什么..目前我使用ul ...与li和div为内容..
第二个问题,这个jquery可以改进,是否可以测量特定jQuery脚本的性能?
$(document).ready(function(){
//store the exact block of html we are working with... the context
var $context = $("ul#accordion")[0];
console.log($context);
//check the context
$("li a", $context).live("click", function(e){
//store this due to being used more than once
var $clicked = $(this);
//slide anything up thats already open
$("li div", $context).slideUp(200);
//test to see if the div is hidden or not..
//slide down if hidden
if($clicked.next().is(":hidden")){
$clicked.next().slideDown(200);
};
//prevent default behaviour
e.preventDefault();
});
});
答案 0 :(得分:1)
$(selector, context)
(等于$(context).find(selector)
),因此我建议只合并一个元素:$('ul#accordion li')
$(ancestor).on('event', 'selector', fn)
代替$('ancestor selector').live(fn)
e.preventDefault()
放在首位。只要代码中出现错误,就不会出现负面副作用。代码:
$(document).ready(function(){
// :first can be omitted, but it's an literal translation
$("ul#accordion:first li").on("click", "a", function(e) {
// prevent default behaviour
e.preventDefault();
// slide anything up thats already open
$("li div", this).slideUp(200);
// slide down if hidden
$clicked.next(':hidden').slideDown(200);
});
});