1

我正在使用 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 () {
});

我敢肯定这段代码有很多问题,如果你能描述所有这些问题,那就太好了,谢谢!

4

2 回答 2

1

好的,第一件事,你的var声明无效,你把它倒过来了。您不能分配这样的变量名。2、你的if说法是错误的。3rd,您的$("#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,所以我对此进行了有根据的猜测。

于 2013-09-04T14:56:32.463 回答
0

你可以检查父母是否有“日历”类

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
   });
}
于 2013-09-04T14:51:10.483 回答