首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >$this不适用于当前元素

$this不适用于当前元素
EN

Stack Overflow用户
提问于 2015-06-17 20:50:33
回答 2查看 62关注 0票数 1

我在JQuery和$this有点问题。

我需要它,因为我动态append不同的表单,我只想提交一个。

我在两种情况下使用它,一个有效,另一个无效,我不知道为什么:

这个行得通,它提交我点击的div:

代码语言:javascript
复制
$(document).ready(function() {
    $("#resultcontainer").on("click", "#DivResult", function() {
        $(this).find("form").submit();
    });
});

这个不起作用:

代码语言:javascript
复制
$(document).ready(function () {
    $(".validedem").on("click", function() {
        if(confirm("Are you sure that you want to deny this film ? ")){
            $(this).find("form").submit();
        }
        else {
          return false;
        }
    });
});

其中.validedem是我的按钮的类。

HTML

代码语言:javascript
复制
<div>
    {% for item in listerecueattente %}
        <div class="funzies">
            <form action="/app.php/start/go" role="form" method="POST" id="formulaire">
                <div id="appendit" class="container">
                    <div class="container col-lg-12 blueskycont mrgbot10" id="choixvalide">
                        <input type="HIDDEN" id="aTrajType" value="{{listerecueattente[0].DEMT_ID_PROP }}" name="DEMT_RED" >
                        <input type="HIDDEN" id="aProtRed" value="{{ listerecueattente[0].DEMT_TRAJ_TYPE }}" name="A_PROT_RED" >
                        <input type="HIDDEN" id="sqdsqds" value="{{listerecueattente[0].DEMT_NUM }}" name="DEMT_NUM" >
                        <div class="container col-lg-12">
                            <div class = funzies col-lg-6> {{ listerecueattente[0].PROF_PRENOM }}  sdq </div>
                            <button  class="btn btn-success col-lg-3 validedem ">Confirmer cette demande <i class="glyphicon glyphicon-white glyphicon-ok-sign"></i></button> 
                            <button  class="btn btn-danger col-lg-3 refusedem" >Refuser cette demande<i class="glyphicon glyphicon-white glyphicon-off"></i></button> </a>
                        </div>
                    </div>
                </div>
            </form>
        </div>
    {%endfor%} 
</div>

你知道为什么$(this).find("form").submit();只提交我列表的第一个结果,而不是我点击按钮的地方吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-17 21:10:31

如果我理解正确的话:

按钮动态追加表单元素,因此需要使用事件委托jQuery.on

  • The

  • 包含在表单内,而不是反之亦然,因此请使用jQuery.closest定位包含被单击按钮的表单

代码语言:javascript
复制
$(document).ready(function() {
    $(document).on("click", ".validedem", function(e) {
        e.preventDefault();
        if (confirm("Are you sure that you want to deny this film ? ")) {
            $(this).closest("form").trigger("submit");
        }
    });
});

话虽如此,在一个表单上使用两个提交按钮是可能的。您可以查看在服务器端单击了哪个按钮。提交按钮需要有不同的值。

票数 0
EN

Stack Overflow用户

发布于 2015-06-17 20:59:24

我认为你的问题出在"on“函数的使用上,因为你使用的是某个框架,你的html可以异步加载。

在这种情况下,您使用"on“做出了正确的决定

代码语言:javascript
复制
$("#resultcontainer").on("click", ".validedem", function() {

您应该在这里以相同的方式使用它

代码语言:javascript
复制
$("any parent static dom element").on("click", ".validedem", function() {
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30892144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档