Javascript 使用jquery更改id并删除单击事件
我有一个名为LOGIN id=log的菜单和一个名为Connect id=Connect的子菜单。如果单击“连接”,将显示一个表单。现在,当用户登录成功时,我想更改用户名的“名称”菜单登录和收件箱的“连接”,这是可行的,但我需要同时更改id和删除 事件侦听器$'connect'。单击函数{},因为用户已连接,我需要收件箱中的新事件,如Javascript 使用jquery更改id并删除单击事件,javascript,jquery,Javascript,Jquery,我有一个名为LOGIN id=log的菜单和一个名为Connect id=Connect的子菜单。如果单击“连接”,将显示一个表单。现在,当用户登录成功时,我想更改用户名的“名称”菜单登录和收件箱的“连接”,这是可行的,但我需要同时更改id和删除 事件侦听器$'connect'。单击函数{},因为用户已连接,我需要收件箱中的新事件,如 $('#inbox').click(function(e) { alert("You click on inbox"); }); Javascript
$('#inbox').click(function(e) { alert("You click on inbox"); });
Javascript
$(document).ready(function() {
function Login() {
this.loadForm = function() {
$("#response-container").load("formLogin.php", function() {
$("#formLogin").submit(function(event) {
var user = $("#username").val();
var pass = $("#password").val();
event.preventDefault();
searchData(user, pass);
});
});
}; //END loadForm FUNCTION
var searchData = function(user, pass) {
getdetails(user, pass)
.done(function(response) {
if (response.success) {
$.each(response.data.users, function(key, value) {
$("#log").text(value['userName']);
$("#connect").text('inbox');
//HERE I WANT TO REMOVE CLICK EVENT FROM #conect and i want to
//change his 'id' for a new id called 'inbox' and add a new
//click event listener
});
} else {
alert("Fail");
}
})
.fail(function(jqXHR, textStatus, errorThrown) {
});
}; //END FUNCTION searchData
var getdetails = function(id, password) {
return $.getJSON("20.php", {
"id": id,
"password": password
});
} //END FUNCTION getdetails
}; //END LOGIN CLASS
//LISTENERS
$('#connect').click(function(e) {
e.preventDefault();
var login = new Login();
login.loadForm();
});
});
html
您可以在jquery对象上使用unbind来删除事件,并使用函数attr来更改id
$('#connect').unbind('click').click(//function click here)
$('#connect').attr('id','inbox');
$("#inbox").click(function (){
//click event
})
参考,$connect.unbind;删除所有事件
$connect.attr'id','inbox';更改id
$('#connect').unbind('click').click(//function click here)
$('#connect').attr('id','inbox');
$("#inbox").click(function (){
//click event
})
您的代码现在看起来像:
$.each(response.data.users, function(key, value) {
$("#log").text(value['userName']);
$("#connect").text('inbox');
$("#connect").unbind();
$("#connect").attr('id','inbox');
$("#inbox").click(function (){
//click event
})
});
不推荐使用解除绑定和绑定。您应该使用off取消绑定,使用on进行绑定。更改ID对绑定事件没有影响,因此您应该避免使用它。使用和来绑定和删除事件。为什么要更改id?@adeneo好的,我需要了解更多关于开和关的信息。谢谢兄弟@David Thomas,因为我需要新元素,可能需要使用新id,如果我使用旧id,可能会让我感到困惑,我不知道我是否错了,或者做了一个不好的练习,我对此一无所知。谢谢,这很有效,但为什么你要使用旧id connect如果它被更改为收件箱,我会更改$connect.clickfunction{}对于$inbox.clickfunction{},它可以完美地工作!还有一个问题。。。我不知道为什么当我点击菜单用户名的新文本时,文本变为旧的登录名。我想这是因为页面被重新加载。你注意到了吗。这是一个锚标记你是对的人,我阻止重新加载,现在是永久的,$'inbox'。单击函数{e.preventDefault;}我接受你的回答,非常感谢。谢谢你的帮助兄弟!!