onclick =“this.closest(”form“)。submit()”点击时不会触发

时间:2015-12-22 23:30:38

标签: javascript jquery onclick form-submit

我有以下

<div  class="delete_list left" onclick="this.closest("form").submit()">
  <form action="deletelist.php" method="post" name="deletelist">
    <input type="hidden" name="second_id" value="'.$row_second['second_id'].'">
  </form>
</div>

当我点击div submit()时不起作用。有趣的是,下面的代码非常完美。

<div  class="delete_list left" onclick="document.forms['deletelist'].submit()">
  <form action="deletelist.php" method="post" name="deletelist">
    <input type="hidden" name="second_id" value="'.$row_second['second_id'].'">
  </form>
</div>

我无法理解其中的差异。谢谢。

1 个答案:

答案 0 :(得分:0)

closest 是一个jquery函数,它上升而不是向下,因此它不能像你的示例中的form那样定位内部元素。

因此,如果您将closest更改为find,那么您的代码将 work ,以便您可以将javascript对象this更改为jquery对象$(this)并最终修复双引号conflit:

<div  class="delete_list left" onclick="$(this).find('form').submit()">

但我建议您避免使用inline-event,因为不推荐使用on点击事件:

<div class="delete_list left">
    <form action="deletelist.php" method="post" name="deletelist">
        <input type="hidden" name="second_id" value="'.$row_second['second_id'].'">
    </form>
</div>

$('body').on('click', '.left', function(){
    $(this).find("form").submit();
});

希望这有帮助。