我有以下标记/代码
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Demo</title>
<script src="directory for jquery script">
$(document).ready(function () {
$("button").on('click', 'test', function() {
var webserUrl = "http://wsf.cdyne.com/WeatherWS/Weather.asmx";
var soapRequest = '<ns1:GetWeatherInformation xmlns:ns1=\'http://ws.cdyne.com/WeatherWS/\' />';
$.ajax({
type: "POST",
url: webserUrl,
contentType: "text/xml",
dataType: "xml",
data: soapRequest,
success: SuccessOccur,
error: ErrorOccur
});
});
});
function SuccessOccur(data, status, req) {
if (status == "success")
alert(req.responseText);
}
function ErrorOccur(data, status, req) {
alert(req.responseText + " " + status);
}
</script>
</head>
<body>
<button id="test">Test</button>
Run Code Online (Sandbox Code Playgroud)
点击测试按钮我希望发送肥皂请求,但由于某种原因,当我点击按钮没有任何反应时,我可以确认它正在点击jquery.js(2.1.1).
我确信这是一个愚蠢的错误,但我没有看到它,我有的代码(这是一个返工版本)工作正常,但这段代码没有.
大大收到任何帮助来挑选问题.
Gon*_*ing 10
错字#test.id选择器需要#前缀.
$("button").on('click', '#test', function() {
Run Code Online (Sandbox Code Playgroud)
是的,这是一个愚蠢的错误.我把这种情况称为代码失明..看了它这么久你再也看不到问题了:)
重要更新
您目前正在滥用委派的事件处理程序.我认为这有充分的理由(比如动态替换页面内容),否则你可以简化处理程序,但这太麻烦了.
当前处理程序不会在动态内容中存活,因为它button直接绑定到s,然后应用过滤器.如果动态添加/替换按钮,则它们不会绑定到新按钮.
一个适当的委托事件处理程序将是
$(document).on('click', 'button#test', function() {
Run Code Online (Sandbox Code Playgroud)
或者,因为它是一个id查找,简单地说
$(document).on('click', '#test', function() {
Run Code Online (Sandbox Code Playgroud)
委托事件处理程序通过侦听事件(在这种情况下click)冒泡到不变的祖先(document如果没有其他方便的话.'body'由于样式问题,因为它有点击错误),然后它将一个jQuery选择器应用于冒泡元素,然后它将函数应用于导致事件的任何匹配元素.这将允许它处理代码运行时不存在的元素,但在事件发生时将存在(非常方便).
笔记:
由于Pete TNT还指出,脚本块不会出现有效.请检查一下:)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |