如何使用.parent()方法创建仅特定于一个<div>的按钮?</div>

时间:2013-09-04 14:43:24

标签: javascript jquery html fullcalendar

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

我确信这段代码存在很多问题,如果您能描述所有这些问题会很棒,谢谢!

2 个答案:

答案 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
   });
}