$ .click没有触发复选框,在Chrome中使用JQuery 1.9.1

时间:2013-04-05 19:56:25

标签: jquery google-chrome

点击事件似乎没有触发此内存html块中的复选框。它会触发按钮而不是复选框。

这是小提琴: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都运行良好。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

来自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/