我有以下代码。一切似乎工作正常,但有时候,有时候确认和警报通知会出现多次,而且它们只会变得过于烦人。以下代码是否有任何问题。谢谢你的建议。
$('.order_stateselect').hover(function(){
var value_text=$(this).find(":selected").text();
var value_code=$(this).find(":selected").val();
$(this).change(function(){
if(confirm('Confirm Order Status Change?')){
var conduct_status_chge=$.post('/seller/helpers/order_status_change.php',{order_item_id:$(this).parent('td').siblings('.order_item_id').text(),order_item_status:$(this).find(':selected').val()},function(data){
alert(data);
})
.error(function() {
$(this).find(':selected').removeAttr('selected');
$(this).find('option:contains(value_code)').attr('selected','selected');
alert('error');
});
}else{
$(this).find(':selected').removeAttr('selected');
$(this).find('option:contains(value_code)').attr('selected','selected');
}
});
});
简要说明我在这里做了什么。
这是一个包含多个选项的选择框。此选择框是项列表中的表格单元格的一部分。
ie:表示每行包含一个项目,并且对于每一行,都有一个专用于该特定行的选择框。
1)悬停时,我会在页面加载时通过我的数据库值获取所选选项的值。
2)当用户从选择框中选择不同的值并确认选择时,我会执行$ .post。
3)如果用户按下取消或脚本调用出错导致$ .post失败,我将所选选项恢复为数据库中的原始值。
对不起,如果我的解释不清楚,但如果你们需要更多信息,请告诉我。感谢。
答案 0 :(得分:3)
我将从您的代码中摘录一小段内容:
$('.order_stateselect').hover(function(){
var value_text=$(this).find(":selected").text();
var value_code=$(this).find(":selected").val();
$(this).change(function(){
当鼠标光标进入区域时,您正在附加更改处理程序;如果多次发生这种情况,您的更改处理程序也会多次应用。
您应该将.change(...)
移到.hover()
之外:
$('.order_stateselect')
.hover(function() { ... })
.change(function() { ... })