我正在使用SammyJS框架进行路由。
正如我的标题所示,我在网页上遇到了事件监听器的问题。在我的代码中,我有4个主页,客户端/传感器/仪表板/状态。在传感器页面上,它会加载许多不同的传感器除了能够编辑传感器元数据之外,还有一个按钮可以将所有者添加到传感器中。只有在转到编辑页面时才会加载页面和按钮的HTML。它看起来像这是Javascript的简化版本......
(function() {
var app = Sammy.apps.body;
app.get('#/sensors', function(context) {
//context.render the index page...
});
app.get('#/sensors/edit/:sensor', function(context) {
context.render('/views/sensors/edit.html', function(view) {
$('#result').html(view);
$(document).on('click', '#addCustomer', function() {
//Add another dropdown customer list...
});
//More event listeners...
})
})
})();
如果我离开该页面,然后返回到它(不必是相同的传感器编辑页面),然后单击ADD CUSTOMER
,它会添加两个。每次我离开然后返回,它会增加1添加的下拉量。我的第一个想法是事件监听器以某种方式被复制,但我不知道如何测试它。非常感谢任何帮助。
答案 0 :(得分:0)
看看jQuery" one"将确保事件处理程序仅绑定一次的方法:http://api.jquery.com/one/
function ajaxReq(php_file, data) {
var request = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); // XMLHttpRequest object
request.open("POST", php_file, true); // set the request
// adds a header to tell the PHP script to recognize the data as is sent via POST
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send(data); // calls the send() method with data as parameter
// Check request status
request.onreadystatechange = function() {
if (request.readyState == 4) {
alert(request.responseText);
}
}
}
var data_send ='n1=v1&n2=v2&n3=v3';
ajaxReq('file.php', data_send);