我正在使用jQuery插件FullCalendar,我想创建一个“周末”按钮,切换日历中的周末。我制作了按钮,但我在同一页面上有多个日历视图,按钮出现在所有这些按钮上,我只希望它出现在主日历上。 所以,我认为我可以使用.parent()方法,这样只有带有“日历”类的日历标题才会有按钮。如果您认为有更好的解决方案可以随意分享,这是我的代码:
var $('.fc-header').parent() = parent
if parent == ".calendar"
$('.fc-header-left').append('<span class="weekends fc-button fc-button-today fc-state-default fc-corner-left fc-corner-right fc-state-active"><span class="fc-button-inner"><span id="weekends" class="fc-button-content">weekends</span><span class="fc-button-effect"><span></span></span></span></span>');
$("#weekends").click(function () {
});
我确信这段代码存在很多问题,如果您能描述所有这些问题会很棒,谢谢!
答案 0 :(得分:1)
好的,第一件事,你的var
声明无效,你倒退了。您无法分配这样的变量名称。 2,你的if
陈述错了。 3,您的$("#weekends").click()
事件不适用于动态创建的元素。您需要将.on()
与所有3个参数一起使用,以便附加到动态创建的元素。 4,只需使用正确的类获取所需的元素并跳过所有其他元素,因为要向所需的元素添加class="calendar"
?无需检查所有这些废话并抓住父母。
更好的解决方案:只需选择实际的元素,而不是像这样选择$('.fc-header')
的所有元素(2行代码,没有if
语句,以及更少的混淆):
$(".calendar").children(".fc-header-left").append('<span class="weekends fc-button fc-button-today fc-state-default fc-corner-left fc-corner-right fc-state-active"><span class="fc-button-inner"><span id="weekends" class="fc-button-content">weekends</span><span class="fc-button-effect"><span></span></span></span></span>');
$(".calendar").on("click", ".fc-button-content", function() {
// Perform click code here...
});
此代码假定有一个元素子类具有fc-header-left
类,它是具有calendar
类的元素的直接子元素。当然,我不知道你是如何设置DOM的,因为你没有发布任何HTML,只是jQuery,所以我对此进行了有根据的猜测。
答案 1 :(得分:0)
您可以检查父母是否有班级&#34;日历&#34;
var $parent = $('.fc-header').parent();
if($parent.hasClass('calendar')){
$('.fc-header-left').append('...Your Button');
//By the way I thing this event should be in the "weekends" class, not the id
$(".weekends").click(function () {
//your event code here
});
}