具有多个链接的jQuery事件处理程序不起作用

时间:2017-03-08 16:22:35

标签: jquery html event-handling

我试图附加jQuery ui-datepicker而我无法让事件处理程序工作:

{
    "status": "success",
    "data": [
        {
            "icao": "KPIE",
            "observed": "07-03-2017 @ 14:20Z",
            "raw_text": "KPIE 071353Z 13017G23KT 10SM CLR 21\/13 A3031 RMK AO2 SLP262 T02060128",
            "wind_degrees": 130,
        }
    ]
}

单击链接时,我没有记录到控制台。这是html:

QObject::startTimer: Timers cannot be started from another thread

我需要将什么作为事件处理程序来触发? jQuery位于我的html页脚的$( '.ui-datepicker' ).on('click', 'a.ui-datepicker-next', 'a.ui-datepicker-prev', function( event ) { event.preventDefault(); console.log("CLICK"); }); 中。

编辑链接不正确 - <div id="ui-datepicker-div" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"...> <div class="ui-datepicker-header ui-widget-header ui-helper-clearfix- ui-corner-all"> <a class="ui-datepicker-next ui-corner-all"...></a> <a class="ui-datepicker-prev ui-corner-all"...></a> ... <script>jQuery here</script> 已更改为 a.ui-datepicker-montha.ui-datepicker-year

由于

1 个答案:

答案 0 :(得分:2)

你的语法不是很正确。选择器需要以逗号分隔,但在同一个字符串中。试试这个:

$('.ui-datepicker').on('click', 'a.ui-datepicker-month, a.ui-datepicker-year', function(e) {
  e.preventDefault();
  console.log("CLICK");
});

注意:'a.ui-datepicker-month, a.ui-datepicker-year'。另请注意使用e,而不是event,因为它会覆盖某些浏览器所拥有的全局事件对象。

*编辑问题后更新:

还有另外两个问题。首先,正确的类是a.ui-datepicker-preva.ui-datepicker-next。此外,ui.-datepicker元素在DOM的加载中不存在,因此没有任何东西可以将事件绑定到。要解决此问题,您可以使用$(document),但理想情况下,您应该使用最接近的父元素,以便在加载DOM时将其作为目标。试试这个:

$(document).on('click', 'a.ui-datepicker-prev, a.ui-datepicker-next', function(e) {
  e.preventDefault();
  console.log("CLICK");
});

Infolog2String