这是我的代码的一部分,我不明白为什么它在第二次点击后有效。它应该在第一次点击后工作 JSFIDDLE
jQuery(document).ready(function($){
var mainfunction = function(){
var $eachblocks = $(".top10_month .periods");
var $blockhead = $(".block-head__link");
$blockhead.on("click", function(e){
var $this = $(this);
var typelink = $(".block-head__link.active").attr("data-date");
e.preventDefault();
$this.parents("ul").find("a").removeClass("active");
this.className += " active";
$this.parents(".block-parent").find(".periods").removeClass('active');
$this.parents(".block-parent").find(".periods[data-period="+typelink+"]").addClass('active');
});
};
mainfunction();
});
答案 0 :(得分:4)
您需要从点击的元素中读取数据
var typelink = $this.data("date");
演示:Fiddle
第一次单击时,您正在读取活动元素的数据,该活动元素是在活动类被分配给当前单击的元素之前的12月
答案 1 :(得分:1)
你应该使用$this
中的当前对象,它总是在DOM中查找第一个$('.block-head__link.active')
,你点击事件将不会第一次工作:
var typelink = $this.attr("date"); // $this change here
答案 2 :(得分:1)
试试这个
工作小提琴:jsfiddle.net/kngU8/5
$blockhead.on("click", function(e){
var $this = $(this);
var typelink = $this.attr("data-date");
$this.parents("ul").find("a").removeClass("active");
this.className += " active";
$this.parents(".block-parent").find(".periods").removeClass('active');
$this.parents(".block-parent").find(".periods[data-period="+typelink+"]").addClass('active');
return false;
});
答案 3 :(得分:0)
工作jsfiddle:http://jsfiddle.net/patelmilanb1/kngU8/6/
$(document).ready(function () {
var myfunction = function () {
$(".block-head__link").on("click", function (e) {
e.preventDefault();
var typelink = $(this).data("date");
$('.block-head__menu').removeClass("active");
$(this).addClass("active");
$(".periods").removeClass('active');
$(".periods[data-period=" + typelink + "]").addClass('active');
});
};
myfunction();
});