您不能“卸载”JavaScript。一旦它被加载,它就被加载了。无法撤消。
但是,您可以分离事件处理程序。见:http://api.jquery.com/unbind/
live() 是unbind() 的特例。实时事件处理程序附加到 document 而不是元素,因此您必须像这样删除处理程序:
$(document).unbind('click');
但是,这可能会删除更多的处理程序,而不仅仅是一个有问题的处理程序,因此您可以执行以下两项操作之一:1) 命名您的处理程序函数或 2) 创建一个命名空间。
命名处理函数
function myClickHandler(){
var pl = $(this).attr('rel');
$.getScript('' + siteAddress + 'min/?js=fjs'+ pl +'', function() {
$('#container').load(""+ siteAddress +"load/"+ pl +"/");
});
}
$("#button").live("click", myClickHandler);
// And later ...
$(document).unbind('click', myClickHandler);
命名空间
$("#button").live("click.myNamespace", function(){
var pl = $(this).attr('rel');
$.getScript('' + siteAddress + 'min/?js=fjs'+ pl +'', function() {
$('#container').load(""+ siteAddress +"load/"+ pl +"/");
});
});
// And later...
$(document).unbind('click.myNamespace');
更新:
正如@RTPMatt 下面提到的,die() 实际上更合适。上面描述的方法会起作用,但是die() 更容易使用。但是,对于 die(),您必须将选择器与调用 live() 时使用的选择器完全匹配,否则结果可能无法预测:
$("#button").live("click", function(){
var pl = $(this).attr('rel');
$.getScript('' + siteAddress + 'min/?js=fjs'+ pl +'', function() {
$('#container').load(""+ siteAddress +"load/"+ pl +"/");
});
});
// And later ...
$('#button').die('click');