【问题标题】:JQuery Datepicker - different hover behaviors for specific cells / date types?JQuery Datepicker - 特定单元格/日期类型的不同悬停行为?
【发布时间】:2013-03-07 11:17:14
【问题描述】:

是否可以为不同的日期类型分配不同的悬停方法?

例如:

beforeShowDay: function(dDate){
              if(condition1){
                  //assign specific method to the "available" type / cell
                  return [true, 'Available', 'specific text'];
              }else if(condition2){
                  //assign specific method to the "not available" type / cell
                  return [false, 'Full', 'specific text'];
              }
              //and so on...
}

我的问题是我不知道如何访问 datepicker 表的特定单元格元素。我知道如何为每个单元格赋予相同的悬停功能,但不知道如何为特定日期类型分配不同的功能。

使用 CSS 更改颜色和内容会起作用,但我需要在悬停功能中添加一些附加功能。例如在另一个 div 中显示一些文本。


已解决

我为我的问题找到了解决方案,但它的方向与假设的完全不同。 使用以下代码,我能够为我的每个单元格类型/日期类型定义不同的悬停函数:

function setCellHover() {
$(".ui-datepicker-calendar tbody td").mouseenter(function() {

    if($(this).attr("class").indexOf("Available") != -1){
        //do your specific stuff for the "available" cell-type here
    }else if($(this).attr("class").indexOf("Full") != -1){
        //do your specific stuff for the "full" cell-type here
    }//and so on...
    });
}

如您所见,我只查找在 datepicker 的“beforeShowDay”选项中设置的当前单元格的 css className。然后我在那里分配不同的悬停行为。

【问题讨论】:

    标签: javascript jquery jquery-ui datepicker jquery-ui-datepicker


    【解决方案1】:

    我知道有两种方法,但都不是很好。

    var dateElements = $("td[data-month][data-year]", calendar);
    dateElements.each(function() {
        var day = parseInt($(this).text(), 10);
        var month = $(this).data("month");
        var year = $(this).data("year");
        var dateElement = $(this);
        dateElement.mouseover(function() {
            console.log(day, month, year);
        });
    });
    

    另一种是使用奇数的 beforeShowDay 可选参数生成类。 http://api.jqueryui.com/datepicker/#option-beforeShowDay

    beforeShowDayType:函数(日期日期) 默认值:空

    函数接受日期作为参数并且必须返回 [0] 等于 true/false 的数组,指示此是否 日期是可选的,[1] 等于 CSS 类名或“” 默认演示文稿,以及 [2] 此日期的可选弹出工具提示。 日期选择器中的每一天都会在显示之前调用它。

    您的请求是一个常见的用例场景,因此希望有人可以为我们提供更好的方法。

    【讨论】:

    • 感谢您的回答。但我想你误解了我的要求。据我了解,您在第一个示例中为每个 dateElement 提供了相同的鼠标悬停功能。但是我想访问特定的单元格,所以我可以将不同的鼠标悬停功能分配给特定的 dateElements。还是我错了?有没有办法例如通过 $("td[data-day][data-month][data-year]" 获取特定的 dateElement ?我会试一试。
    • 啊,我明白了。我假设您想知道日期,以便您可以根据日期做一些不同的事情。使用我的代码,您可以在 mouseover 函数中编写 switch/if/whatnots,并根据日/月/年变量进行分支。如果您只有可用/完整,那么像您一样使用 beforeShowDayType 确实是更好的解决方案:)
    猜你喜欢
    • 1970-01-01
    • 2014-07-09
    • 2012-12-23
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多