Javascript / jquery无法正常运行,即时打印警报

时间:2016-02-29 00:13:16

标签: javascript php jquery html ajax

更新:我附上了一个代码段,用于显示此处正在运行但不在我网站上的代码。

在我的本地网站上使用我的javascript进行了一些操作。我决定通过按一下按钮进行测试

<button id="test">test</button>

并正在运行

$('#test').click(alert("hello"));

问题是当我重新加载页面而不是按下按钮时发生警报。有人有过类似的问题吗? 我在网站上运行了一些ajax和一些PHP以及基础知识(htmlcssjs)。

非常感谢任何帮助。

&#13;
&#13;
$('#test').click( function() { alert("hello"); } );


function showWords(chooseDiv,str,table) {
    if (str == "") {
        document.getElementById(chooseDiv).innerHTML = "";
        return;
    } else { 
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById(chooseDiv).innerHTML = xmlhttp.responseText;
            }
        };
        xmlhttp.open("GET","getWords.php?filter="+str+"&table="+table,true);
        xmlhttp.send();
    }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<button id="test">test</button>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:4)

将您的提醒保存到function () { alert (...); },否则会立即触发

$('#test').click( function() { alert("hello"); } );

要正确附加此事件处理程序,您可以1)将其移至html标记下方,最好在关闭</body>标记之前,或者2)将其放在jQuery DOM ready listener中,然后将其保留在页面的任何位置(只要它低于jquery.js本身),如下所示:

$(document).ready( function() {
     $('#test').click( function() { alert("hello"); } );
});

答案 1 :(得分:1)

在您的代码中,alert()函数立即运行。这与此相同:

var val = alert("hello"); // var val = undefined;
$('#test').click(val);    // $('#test').click(undefined);

为了仅在单击元素时运行它,您需要将其放入回调函数中,如下所示:

$('#test').click(function () {
    alert("hello");
});

您还可以将回调函数定义为“普通”函数,然后将其传递给.click()方法,如下所示:

function handleClick() {
    alert("hello");
}
$('#test').click(handleClick);

回调函数仅在调用时运行。在这种情况下,.click()方法将在用户单击元素时运行它。

为了将点击处理程序绑定到元素,需要在 HTML之后运行。你应该做两件事:

  1. 将您的jQuery内容包装在以下内容中:

    $(function () {
        // Put your jQuery code here...
    });
    
  2. 在页面底部添加您的Javascript。这将确保您的HTML确实已加载,并且它还具有使您的网站加载更快的额外好处; Javascript文件会停止呈现网站,并将其放在底部可以防止这种情况发生。

    <html>
        <head>...</head>
        <body>
            ...
            <script src="myscripts.js"></script>
        </body>
    </html>