.click()在使用jQuery时不起作用

.click() not working when using jQuery

本文关键字:jQuery 不起作用 click      更新时间:2023-09-26

我有一个正常的js脚本,从我的项目开始就一直在工作。但现在由于某种原因,当我点击按钮没有任何工作,没有响应的点击事件(请注意,这曾经工作),并没有显示在控制台日志中说明是否有某种错误…脚本没有响应…

下面是HTML:

<script type="text/javascript"  src="js/myscript.js"></script>
<form>
   <input type="text" name="signinemail" id="signinemail" placeholder="Enter Email">
   <input type="password" name="signinpassword" id="signinpassword" placeholder="Enter Password">
   <input type="submit" id ="siginsubmit" name="siginsubmit" value="Sign In">
</form>

这是我的javascript:

$(document).on('pageinit',"#sellbookpage",
    function()
    {
        $("#siginsubmit").click
            (
                function()
                {
                   alert("hello");
                }   
            );
    }
);

注意我正在使用jQuery Mobile

pageinit事件仅在使用jQuery Mobile时可用。你还在用那个吗?否则你应该使用$(document).ready( ... )

我的问题的获奖答案与上面提到的任何帖子都无关!导致问题的原因是我正在使用jQuery移动版、jQuery和Twitter Bootstrap。当我注释掉指向bootstrap css的链接时,一切都开始像以前一样工作了。因此,twitter Bootstrap与jQuery或jQuery Mobile之间必然存在冲突。

你有没有试过使用live()

$("#sellbookpage").live('pageinit', function() {
            $("#siginsubmit").click(function(){
                 alert("hello");
            });
});

From http://api.jquery.com/on/#on-events-selector-data-handlereventObject:

当提供选择器时,事件处理程序被称为委托。事件直接发生时,不会调用处理程序绑定元素,但只适用于后代(内部元素)匹配选择器。jQuery从事件目标中弹出事件到附加处理程序的元素(即最里面的元素)最外层元素),并运行该元素的处理程序路径匹配选择器。

siginsubmit是一个input(不能包含后代元素,更不用说后代元素与id="sellbookpage"),所以选择器字符串不匹配任何东西,点击事件永远不会到达siginsubmit输入。

改成:

$(document).on('pageinit', function () {
    $('#siginsubmit').click(function (e) {
        alert('hello');
        e.preventDefault();
        return false;
    });
});

工作小提琴:http://jsfiddle.net/VG3Eg/