问题似乎是两个事件处理程序都在触发,而您只希望后者触发。
jQuery .change()函数 将 事件处理程序 添加到change事件。它不会替代现有的。如果要删除以前的处理程序,则需要类似以下内容的东西:
$('.TextFieldSettings #fieldTitle').unbind(’change’)
在附加新的处理程序之前。
请注意,我不确定这是否可行(我刚刚从api文档中找到了它),并且现在无法对其进行测试。但是,通常的想法是,如果您希望事件处理程序停止对事件的响应,则必须删除该处理程序。
解决方法我有使用JQuery..I米一个问题$.ajax()在我的代码(Function 1)发送字段名和序列号,其通过获取其数据的ctrller$_POST[’name’]和$_POST[’sequenceno’]并且与序列表中没有given..And生成预览显示面板更新字段名与插入的字段..现在,我再次尝试更改字段名称。tat是现在,当我单击生成的显示面板字段时,相应的设置将打开,我将尝试立即更改字段名称(Function2)
两者Function1和Function2都相同..在Function1我发送的是字段名和序列号
在功能2中,我要发送相同的字段名和(但其他值)序列号。
但是在Function1中(sequenceno是计数器值),而在Function2中(sequenceno是单击的div id(显示面板))
我如何才能对两个都使用相同的功能。或者我是否需要使用单独的功能。
即使我尝试使用2个具有不同网址的单独功能,但未正确更新
我的代码是
//This is what i insert the field initially $('.TextFieldSettings #fieldTitle').change(function (){ fieldname=$('.TextFieldSettings #fieldTitle').val(); $.ajax({ type: 'POST',url: './server',data: 'name='+fieldname+'&sequenceno='+counter,success: function(msg){ }//success });//ajax });//change//After inserting to get the updated values in JSON format var htm = $.ajax({ type: 'GET',url: './viewforms',async: false }).responseText;var myObject = eval(’(’ + htm + ’)’); gettype=myObject.attributes[0]['type']; getlabel=myObject.attributes[0]['labels']; //showing in my DisplayPanel view $('#labelstr'+counter+'').html(getlabel); });//change
现在,当我单击DisplayPanel视图时
$('#displayPanel div').live('click',function(){ div_id=$(this).attr('id');var htm = $.ajax({ type: 'GET',url: './getattributes/'+div_id+'',async: false }).responseText;var myObject = eval(’(’ + htm + ’)’);gettype=myObject.attributes[0]['type'];getlabel=myObject.attributes[0]['labels'];getsize=myObject.attributes[0]['size']; if(gettype==’Text’) { $('.TextFieldSettings').show(function(){ $('.TextFieldSettings #fieldTitle').val(getlabel);//showing the updated value if(getsize==’100’) { $('#fieldSize option:contains(Small)').attr('selected',true); } else if(getsize==’200’) {$('#fieldSize option:contains(Medium)').attr('selected',true); } else { $('#fieldSize option:contains(Large)').attr('selected',true); }//Again i m changing the fieldname $('.TextFieldSettings #fieldTitle').change(function (){ fieldname=$('.TextFieldSettings #fieldTitle').val();alert(div_id);$.ajax({ type: 'POST',url: './editsettings',data: 'name='+fieldname+'&sequenceno='+div_id,success: function(msg){ }//success });//ajax});//change in text value later*/ });//show }//if type = TEXT});//displaypanel Div clicked
但是现在,如果我尝试再次更改字段名,我正在编写另一个POST函数,editsettings但是执行是在内部执行Func1(最初更改)而不是Func2(再次更改字段名)…请任何人找出答案…。注意:$('.TextFieldSettings #fieldTitle').change()在我的程序内使用了两次。可能是因为这样更新错误