我知道我可以使用jQuery的.filter()進行屬性過濾。我也知道自從W3C正式實現HTML5中的數據事物以來,這種自定義屬性的使用就不受歡迎了。屬性大於傳遞變量的jQuery元素(.filter())
但我仍然想知道爲什麼這不起作用。
JS:
$("[id^=hide]").click(function() {
var lvl = $(this).attr('lvl');
var id = $(this).attr('tar');
$('#' + id).slideToggle(100);
$('div').filter(function(lvl) {
return $('this').attr('lvl') > lvl;
}).slideToggle(100);
});
HTML:
<a id="hide1" lvl="0" tar="1"></a>
<div id="1" lvl="0"></div>
<a id="hide2" lvl="1" tar="2"></a>
<div id="2" lvl="1"></div>
<a id="hide3" lvl="2" tar="3"></a>
<div id="3" lvl="2"></div>
<a id="hide4" lvl="2" tar="4"></a>
<div id="4" lvl="2"></div>
<a id="hide5" lvl="1" tar="5"></a>
<div id="5" lvl="1"></div>
<a id="hide7" lvl="2" tar="7"></a>
<div id="7" lvl="2"></div>
我想實現的是。 1.點擊鏈接。 2. SlideToggle靠近鏈接的div。 3. SlideToggle其級別屬性大於該鏈接級別屬性的所有其他div。
我也試圖做這樣的:
$("[id^=hide]").click(function() {
var lvl = $(this).attr('lvl');
var id = $(this).attr('tar');
$('#' + id).slideToggle(100);
hideOthers(lvl);
});
var hideOthers = function(lvl) {
$('div').filter(function(lvl) {
return $('this').attr('lvl')> lvl;
}).slideToggle(100);
}
但是,這也不能正常工作。有任何想法嗎?
我認爲e.preventDefault()是必需的。 – jrath