我正在嘗試做一個過濾器,它將顯示或隱藏<div>
關於它們在其標籤中的data-type
。jquery中的DOM閱讀
這裏是我的javascript:
var course_difficulty_level_filter= function(el,level)
{
this.el = el;
this.el.closest('#courses_content').find("div").hide();
if(level != "00"){
this.el.closest('#courses_content').find('div[data-difficulty="'+level+'"]').show();
console.log("show difficulty_level : "+ level);
} else {
this.el.closest('#courses_content').find("div").show();
console.log("show difficulty_level : all");
};
}
$('#course_filter_level1').click(function(){
$(this).click(course_difficulty_level_filter($(this),"1"));
});
這裏是我的HTML:
<div id="coursefilter">
<div id="coursefilter_content" class="hide">
<div id="coursefilter_content_text">
<div id="course_filter_level_text"><p class="course_filter">Level: </p></div>
</div>
<div id="coursefilter_content_icons">
<div id="course_filter_level">
<div id="course_filter_level1" class="opacityquarter">
<div id="level1_rectangle1"></div>
<div id="level1_rectangle2"></div>
<div id="level1_rectangle3"></div>
<div id="level1_rectangle4"></div>
</div>
</div>
</div>
</div>
</div>
<!--Courses - Course Overviews-->
<div id="courses">
<div id="courses_content" class="hide">
<div class="course_overview_content_even" data-difficulty="1" data-lang="en"></div>
</div>
</div>
我順利拿到console.log => show difficulty_level : 1
,所以我的腳本是 「工作」,但我認爲這不可能導航槽DOM,但我不明白爲什麼。
您試圖綁定一個'click'事件處理程序的元素剛點擊?那有什麼意義呢?另外:您正在調用'course_difficulty_level_filter'而不是將它傳遞給'$(this).click',所以綁定不起作用。如果你只是想調用'course_difficulty_level_filter',那麼去掉'$(this).click'部分。就目前而言,函數內部的'this'是指全局對象。如果它是一個事件處理程序,它會引用DOM元素,那麼爲全局對象或DOM元素分配「el」有什麼意義? –