onchange找到这个父母

问题描述 投票:2回答:2

我有几个选择框(至少5个)具有以下结构

<li>
   <div>
      <select name="sb[]">...</select>
   </div>
</li>

当一个sb更改我想要进行ajax调用时传递选定的值并将父li的内容替换为来自ajax的html接收。

我尝试了以下内容

onchange="
    $.get('file.php', { action: 'dothis'}, function(html) { 
      $(this).parent('li').html(html);
    });
"

但是没有用

任何帮助

jquery parent
2个回答
6
投票
$('select[name="sb[]"]').change(function(){
   var $this = $(this);
   $.get('file.php', { action: 'dothis'}, function(html) { 
      $this.closest('li').html(html);
    });
})

1
投票

如果你真的想要,你仍然可以在onchange属性中执行此操作。问题是(如所指出的)两个方面:首先,ajax回调内部的这个不再与更改事件处理程序中的相同,其次你应该使用nearest()或parents():

onchange="
    var select = $(this);
    $.get('file.php', { action: 'dothis'}, function(html) { 
      select.closest('li').html(html);
    });
"

要么

onchange="
    $.get('file.php', { action: 'dothis'}, $.proxy(function(html) { 
      $(this).closest('li').html(html);
    }, this));
"
© www.soinside.com 2019 - 2024. All rights reserved.