Javascript 无法将click/mouseup/mousedown事件侦听器添加到<;a href>;
我正在尝试使用HTML+CSS+Javascript+jQuery在Javascript 无法将click/mouseup/mousedown事件侦听器添加到<;a href>;,javascript,jquery,click,mousedown,mouseup,Javascript,Jquery,Click,Mousedown,Mouseup,我正在尝试使用HTML+CSS+Javascript+jQuery在标记上创建一个按钮。按钮显示正确。但是,当我单击它时,除了默认行为(即导航到“#”)之外,什么也不会发生。有没有关于我做错了什么的建议?这是我的密码: //container is a div created with //borderDiv = document.createElement('div') and //document.body.appendChild(borderDiv); fun
标记上创建一个按钮。按钮显示正确。但是,当我单击它时,除了默认行为(即导航到“#”)之外,什么也不会发生。有没有关于我做错了什么的建议?这是我的密码:
//container is a div created with
//borderDiv = document.createElement('div') and
//document.body.appendChild(borderDiv);
function addMenuNavigation(container) {
var temp_innerHTML = '' +
'<div id="titleBar" class="titleBar">' +
'<div id="menuTitle" class="menuTitle"><img id="titleImage" style="height: 70px; position: absolute; top: 2px; left:120px"></img></div>' +
'<a href="#" class="leftButton" id="leftButton">' +
' <div style="position: relative; top: 6px;"><img src="' + getURL('img/menu/iPhoneStyle/chevronLeft.png') + '"></img></div>' +
'</a>' +
'</div>' + //titleBar
'';
container.innerHTML = temp_innerHTML;
var $leftButton = $('#leftButton');
console.dir($leftButton); //Indeed it does display the #leftButton element
//FIXME BUG 'MenuNavigation' below functions do not get registered ...
$('#leftButton').mousedown(function(e) {
$('#leftButton').addClass("pressed");
console.log('leftButton down ' + this.id);
});
$('#leftButton').mouseup(function(e) {
console.log('leftButton up ' + this.id);
$(this).removeClass("pressed");
});
$('#leftButton').click(function(e){
console.log('leftButton clicked ' + this.id);
click_e.preventDefault();
});
}
我在和Chrome合作
有什么建议吗?多谢各位
$('#leftButton').click(function(e){
console.log('leftButton clicked ' + this.id);
click_e.preventDefault();
});
应为e.preventDefault() 在您尝试将事件附加到DOM之前,浏览器是否尚未完成将HTML添加到DOM中 i、 在这两条线之间
container.innerHTML = temp_innerHTML;
var $leftButton = $('#leftButton');
在这种情况下,您可能希望将事件附加到.live(),我个人更喜欢这样添加我的事件处理程序:
function addMenuNavigation(container) {
var container = $(container).empty();
var titleBar = $('<div id="titleBar/>');
var leftButton = $('<a href="#">Image here</a>').mousedown(leftButtonMousedown).mouseup(leftButtonMouseup).click(leftButtonClick).appendTo(titleBar);
titleBar.appendTo(container);
}
function leftButtonMouseDown(e) { //mouse down handler
}
function leftButtonMouseUp(e) { //mouse up handler
}
function leftButtonClick(e) {
e.preventDefault();
// handle the click here
}
函数addMenuNavigation(容器){
var container=$(container.empty();
var titleBar=$('Thanky!!我使用了.on(),它似乎相当于jquery 1.7的.live(),并且工作正常。是的,这是一个非常令人讨厌的问题——我已经遇到过几次。显然,HTML5在DOM更改后再次完全加载时指定了一个事件。这可能适用于$(“#leftButton”)。就绪(…)谢谢。下次我一定会考虑这个款式的。
function addMenuNavigation(container) {
var container = $(container).empty();
var titleBar = $('<div id="titleBar/>');
var leftButton = $('<a href="#">Image here</a>').mousedown(leftButtonMousedown).mouseup(leftButtonMouseup).click(leftButtonClick).appendTo(titleBar);
titleBar.appendTo(container);
}
function leftButtonMouseDown(e) { //mouse down handler
}
function leftButtonMouseUp(e) { //mouse up handler
}
function leftButtonClick(e) {
e.preventDefault();
// handle the click here
}