gpt4 book ai didi

jQuery .live() 不适用于单击事件

转载 作者:行者123 更新时间:2023-12-01 01:04:25 26 4
gpt4 key购买 nike

我有一个ajax日历,当点击一些箭头时它会改变月份。由于某种原因,点击事件在 live() 方法中不起作用。它曾经有效,但现在由于某种原因不起作用。

如果我用 click() 替换 live() 它可以工作,但我需要 live() 方法。

假设

  • 我正在使用最新版本的 jQuery。
  • 不会抛出任何 JS 错误。
  • HTML 有效
  • 正在找到 a.x-btn 选择器(长度 = 2)
  • console.log('Got this far!') 正确触发。
  • console.log('Sidebar Cal Clicked') 根本不触发。
  • 在 Wordpress 环境中运行。
  • DOCTYPE 设置为 HTML5

//ajax calendars
jQuery(document).ready(function($) {

//sidebar
$(function() {
var s = $('#s-calendar'), p = s.closest('.widget');
console.log('Got this far!');

//prevent collapse
p.css('min-height', p.height());

s.find('a.x-btn').live('click', function(e) {
console.log('Sidebar Cal Clicked');
var d = $(this).attr('data-cal-date'), n = $(this).attr('data-nonce');
var url = $(this).attr('data-ajaxurl');
$.ajax({
url:url,
type:'POST',
data:'action=wpcal&sidebar=true&_wpcal_nonce='+n+'&date='+d,
success:function(data) {
s.fadeOut(500, function() {
s.html(data).fadeIn(500);
});

}
});
return false;
});

});
});

回答

原来是另一段 JS 导致直播无法正常进行。 live() 方法需要事件传播才能正常工作。我的代码顶部有一小行 JS,有时我发现它很有用。

$('body a[href=#]').click(function(event) { event.preventDefault(); });

我使用该代码来防止单击无用链接时页面跳转。这将结束所有单击时带有 href="#"的“A”标签的传播。我删除了它,一切正常。

此外,不管 jQuery 文档如何说,使用 jQuery 1.5.2,live() 方法在 DOM 遍历之后起作用。无论如何,我还是继续更改了它,只是为了与文档保持一致。但它确实有效!谢谢大家的帮助!

最佳答案

我认为这源于对s.find的预评估。使用此代码会产生不同的结果吗?

$('#s-calendar a.x-btn').live('click', function(e) {

关于jQuery .live() 不适用于单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5542820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com