1

我有一个块,里面有很多小块。我想编辑那些小块并一次保存。因此,当我单击编辑时,我会弹出一个表单,在提交所需数据时会给我新的数据。现在的问题是当我编辑第一个块然后在提交后继续编辑第二个块时,单击下拉菜单仍然给我以前的 id 而不是新的。我在哪里做错了?我就是不明白。我还尝试在每次提交后删除选定的属性

$('#overlay_form').find('select.getdata option:selected').attr('selected', '');

我的代码在这里:

http://jsfiddle.net/samjhana/AbyLN/3/

欢迎任何帮助或建议。提前致谢。

4

3 回答 3

2

根据您的小提琴,您必须将变量 controllerID 设为全局或至少由两个事件共享。

var controllerId;

$('select.getdata').live('change', function(e){
            //e.preventDefault();
            e.stopPropagation();
...

GetData X 的 click 事件不应该在 change 事件中。

   $('a.ok').click(function(e){
                    e.preventDefault();

                    e.stopPropagation();
                    alert(controllerId);
...

这是您的小提琴的更新

http://jsfiddle.net/AbyLN/4/

于 2013-08-13T05:31:40.697 回答
1

问题似乎是您将多个事件绑定到“GetData”链接

 $('a#btn_getdata').click(function(){
      e.preventDefault();
      var pos = $('input.position').val();
      var url = $('input[name=url]').val();
  });
  //and 
  $('a.ok').click(function(){
  });

点击事件被添加到同一个标签中。尝试重写您的代码,以便您拥有所有的逻辑

 $('a.ok').on('click', function(){
 });

另请注意,从 jQuery 1.7 开始,不推荐使用 .live() 方法。如果您需要将事件绑定到稍后将通过 ajax 出现的不存在的 html 节点,您可以这样做

$('document').on('click', 'a.ok', function(){
 });

希望这可以帮助。

于 2013-08-13T05:12:42.460 回答
1

我认为你需要简化这个

关于下拉列表的更改事件

$('select.getdata').change(function(){

 var id= $(this).val();
 if(id==1)
 {
    // here is your code 
 }
 else if(id==2)
 {
   //here is your code
 }     

});

 $('a#btn_getdata').click(function(){

 var id= $('select.getdata').val();
 if(id==1)
 {
    // here is your code 
 }
 else if(id==2)
 {
   //here is your code
 }     

});
于 2013-08-13T05:13:37.400 回答