2014-09-03 51 views
0

考慮下面的jQuery代碼,一旦input1被點擊input2點擊處理程序事件被刪除。當點擊input3並且元素再次啓用時,點擊處理程序會發生什麼情況? 我一直在做的一些測試表明它不再存在,如果它已被刪除,我如何在下面的情況下重新啓用它?添加禁用的屬性,刪除jQuery中的永久點擊事件?

<input id="input1"> 
<input id="input2"> 
<input id="input3"> 
$("#input1").on('click', function() { 
    $("#input2").prop('disabled', 'true'); 
    // do something 
}); 
$("#input3").on('click', function() { 
    $("#input2").prop('disabled', 'false'); 
}); 
$("#input2").on('click', function() { 
    // do something 
}); 

回答

1

你的prop使用是不正確。它採用disabled屬性的布爾值。使用字符串"true""false"將始終評估爲true

$("#input1").on('click', function() { 
    $("#input2").prop('disabled', true); 
    // do something 
}); 
$("#input3").on('click', function() { 
    $("#input2").prop('disabled', false); 
}); 
$("#input2").on('click', function() { 
    // do something 
}); 

jsFiddle

0

使用如下

$("#input1").on('click', function() { 
     $("#input2").prop('disabled', 'disabled'); 
     // do something 
    }); 
    $("#input3").on('click', function() { 
     $("#input2").removeAttr('disabled'); 
    }); 
    $("#input2").on('click', function() { 
    // do something 
    });