破坏javascript函数

破坏javascript函数,javascript,jquery,Javascript,Jquery,我有一个点击事件 $('#ship_Move').click(function (event) { event.stopPropagation(); $('.shipActionsList').remove(); moveShip(shpID); }); 它调用一个函数moveShip function moveShip(shp_id) { $('.fieldDivs').click(functio

我有一个点击事件

$('#ship_Move').click(function (event) {                
        event.stopPropagation();
        $('.shipActionsList').remove();
        moveShip(shpID);
    });
它调用一个函数moveShip

function moveShip(shp_id) {
    $('.fieldDivs').click(function () {       
        $("#hello").append("Move "+ shp_id + "to " + $(this).attr('id')+"<br/>");
    });
}
此代码将仅结束此单击事件,而不结束moveShip函数

我希望我说得够清楚了。。。
谢谢

您可以提前解除现有
单击事件处理程序的绑定:

$('.fieldDivs').off('click').click(function() {
   // ...
});
如果有其他应保留的
单击
事件处理程序,我建议使用命名空间事件:


不过,仔细考虑后,您可以只绑定事件处理程序一次,并通过变量共享必要的数据,而不是反复绑定事件处理程序:

$(function() {
   var shpID = ...; // however this is set

    $('#ship_Move').click(function (event) {                
        event.stopPropagation();
        $('.shipActionsList').remove();
        // set shpID here somehow?
    });

    $('.fieldDivs').click(function () {       
        $("#hello").append("Move "+ shpID + "to " + $(this).attr('id')+"<br/>");
    });
});
$(函数(){
var shpID=…;//但这是设置的
$('ship#u Move')。单击(函数(事件){
event.stopPropagation();
$('.shipActionsList').remove();
//怎么把shpID设置在这里?
});
$('.fieldDivs')。单击(函数(){
$(“#您好”).append(“Move”+shpID+”到“+$(this.attr('id')+”
”); }); });

看起来您不必仅因为
shpID
更改而绑定新的事件处理程序。当然,这是一个简化的示例,因为我不知道您的代码,但可能会有所帮助。

您可以先解除现有
的绑定,然后单击事件处理程序:

$('.fieldDivs').off('click').click(function() {
   // ...
});
如果有其他应保留的
单击
事件处理程序,我建议使用命名空间事件:


不过,仔细考虑后,您可以只绑定事件处理程序一次,并通过变量共享必要的数据,而不是反复绑定事件处理程序:

$(function() {
   var shpID = ...; // however this is set

    $('#ship_Move').click(function (event) {                
        event.stopPropagation();
        $('.shipActionsList').remove();
        // set shpID here somehow?
    });

    $('.fieldDivs').click(function () {       
        $("#hello").append("Move "+ shpID + "to " + $(this).attr('id')+"<br/>");
    });
});
$(函数(){
var shpID=…;//但这是设置的
$('ship#u Move')。单击(函数(事件){
event.stopPropagation();
$('.shipActionsList').remove();
//怎么把shpID设置在这里?
});
$('.fieldDivs')。单击(函数(){
$(“#您好”).append(“Move”+shpID+”到“+$(this.attr('id')+”
”); }); });

看起来您不必仅因为
shpID
更改而绑定新的事件处理程序。当然,这是一个简化的示例,因为我不知道您的代码,但可能会有所帮助。

您是否尝试输入Konami代码以查看发生了什么?您是否尝试输入Konami代码以查看发生了什么?
$(function() {
   var shpID = ...; // however this is set

    $('#ship_Move').click(function (event) {                
        event.stopPropagation();
        $('.shipActionsList').remove();
        // set shpID here somehow?
    });

    $('.fieldDivs').click(function () {       
        $("#hello").append("Move "+ shpID + "to " + $(this).attr('id')+"<br/>");
    });
});