【问题标题】:$.click not firing on checkbox, in Chrome with JQuery 1.9.1$.click 在带有 JQuery 1.9.1 的 Chrome 中未触发复选框
【发布时间】:2023-03-12 19:23:01
【问题描述】:

在内存中的 html 块中的复选框上似乎没有触发 click 事件。它确实为按钮而不是复选框触发。

这是小提琴:http://jsfiddle.net/X2en3/18/

还有代码:

使用 .trigger() 触发: 使用 .click() 触发:

var working = $('<div><input type="checkbox" id="myBox"/><button id="myButton"/><div>'),    
checkbox = working.find('#myBox'),
button = working.find('#myButton'),
stage;

function boxclicked() {$('#' + stage).append('--checkbox');}
function buttonclicked() {$('#' + stage).append('--button');}

working.delegate('#myBox', {click: boxclicked});
working.delegate('#myButton', {click: buttonclicked});

stage = 'trigger';

checkbox.trigger('click');
button.trigger('click');

stage = 'click';

checkbox.click();
button.click();

这只发生在 Chrome 和 JQuery 1.9.1 上。 Firefox/IE 9 和以前版本的 JQuery 都可以正常工作。

感谢任何帮助。

【问题讨论】:

  • 附加测试:附加到正文使其工作,并且使用直接绑定而不是事件委托也可以工作(它不绑定到正文。)这表明不属于的复选框上的单击事件DOM 不会在 chrome 中冒泡。

标签: jquery google-chrome


【解决方案1】:

来自 jquery.com

http://api.jquery.com/delegate/

从 jQuery 1.7 开始,.delegate() 已被 .on() 方法取代。 然而,对于早期版本,它仍然是最有效的方法 使用事件委托。有关事件绑定和委托的更多信息 在 .on() 方法中。一般来说,这些是等效的模板 对于这两种方法:

尝试使用on 方法

http://api.jquery.com/on/


var $checkbox = $("<input>", { type: "checkbox", id: "myBox" });
var $button = $("<button>", { type: "checkbox", id: "myButton" });

var $container = $("<div>");
$container.append($checkbox);
$container.append($button);

$("body").append($container);

$container.on("click", "#myBox", getCheckboxStatus);
$container.on("click", "#myButton", getButtonStatus);

function getCheckboxStatus() {
    $('#chckBoxVerify').append('Yes');
}

function getButtonStatus() {
    $('#buttonVerify').append('Yes');
}

$checkbox.click();
$button.click();

工作示例:http://jsfiddle.net/hunter/X2en3/22/

【讨论】:

  • 您的代码示例与我提供的代码示例明显不同。您的示例在正文中附加了按钮/复选框,而我的没有。这似乎有所作为。
  • 将您的更改为不附加到正文,并且复选框单击不会触发,jsfiddle.net/X2en3/23。它在 JQuery 1.8.3 中触发
猜你喜欢
  • 1970-01-01
  • 2015-10-03
  • 2018-01-19
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
相关资源
最近更新 更多