我正在運行rails 3.1,並在文件/app/assets/javascripts/procedures.js中包含以下jquery腳本。jquery - 事件監聽器:爲什麼只有一個腳本可以工作?
$(document).ready(function(){
$('.unselected').click(function() {
$(this).removeClass('unselected');
$(this).addClass('selected');
});
$('.selected').click(function() {
$(this).removeClass('selected');
$(this).addClass('unselected');
});
});
第一個操作按預期工作(選擇),但取消選擇不起作用。
另一方面,此腳本按預期工作。
$(document).ready(function(){
$('.tile').click(function() {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
$(this).addClass('unselected');
} else if ($(this).hasClass('unselected')) {
$(this).removeClass('unselected');
$(this).addClass('selected');
}
});
});
是否因爲事件監聽器只在腳本第一次運行時才被分配?
還可以考慮使用這種方法來切換類:http://api.jquery.com/toggleClass/ – nbrooks
如果在DOM中有一些父元素(對於'.tile'元素)在上面的腳本中用它的id選擇器代替'document',以提高效率。 – nbrooks