为什么我在下拉期间获得以前的ID

时间:2013-08-13 04:47:18

标签: jquery html-select

我有一个块里面有很多小块。我想编辑那些小块并立即保存。因此,当我点击编辑时,我有一个弹出窗体,当提交所需的数据时会给我新的数据。现在的问题是,当我编辑第一个块然后继续编辑第二个块后,提交点击下拉列表仍然给我以前的ID而不是新的ID。我在哪里做错了?我只是无法得到它。我还尝试在每次提交后删除所选属性

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

我的代码在这里:

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

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

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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(){
 });

希望这有帮助。

答案 2 :(得分: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
 }     

});