Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法将click/mouseup/mousedown事件侦听器添加到<;a href>;_Javascript_Jquery_Click_Mousedown_Mouseup - Fatal编程技术网

Javascript 无法将click/mouseup/mousedown事件侦听器添加到<;a href>;

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

我正在尝试使用HTML+CSS+Javascript+jQuery在
标记上创建一个按钮。按钮显示正确。但是,当我单击它时,除了默认行为(即导航到“#”)之外,什么也不会发生。有没有关于我做错了什么的建议?这是我的密码:

    //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
}