首页 > 解决方案 > laravel Javascript 和渲染部分

问题描述

嗨,我用 laravel 做了一个 webapp,有各种形式,可以将数据添加到数据库,然后只刷新一些部分(例如插入订单,然后插入一些产品......等等),但是当部分渲染 javascript 不再工作时。我有一些 Jquery 可以捕获一些事件......例如一些点击按钮。例子

HEAD 中的部分脚本

    <script src="{{ asset('public/js/jquery-3.5.1.min.js') }}"></script>
    <script src="{{ asset('public/js/vendor/popper.min.js') }}"></script>
    <script src="{{ asset('public/js/bootstrap.min.js') }}"></script>
    <script src="{{ asset('public/js/vendor/holder.min.js') }}"></script>
    <script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
    <script>
        $(document).ready(function(){

            $(document).ajaxSend(function() {
            $("#overlay").fadeIn(300); 
            });

            $('#searchPolizza').keydown(function (e) {
              if (e.keyCode == 13) {
              e.preventDefault();
              $value=$(this).val();
                $.ajax({
                    type : 'get',
                    url : "{{ url("/trova") }}",
                    data:{'numero':$value},
                    success:function(data){
                    $('#RefreshContent').replaceWith(data);
                    //initRefundsFunctions();
                    //initDossierListClick();
                    }
                });
              }
            });

$( "#addDossier" ).click(function( event ) {
          event.preventDefault();

          //$("#addDossierForm")[0].reset();
          var r = confirm("Vuoi veramente creare un nuovo dossier?");
            if (r == true) {
                       ....continue.......</script>

在我找到一个调用 ajax '#searchPolizza' 的“polizza”之后,我刷新了内容部分

RefreshContent 部分的一部分,我有一个带有按钮#addDossier 的表单,我可以在与第一次搜索相关的刷新部分后按下

<div class="" style="zoom:90%">
  <form class="form-inline" id="addDossierForm"> 
    <input type="text" class="form-control mb-2 mr-sm-2" placeholder="dossier" id="dossier">
    <input type="date" class="form-control mb-2 mr-sm-2" placeholder="data sinitro" id="date_cla">
  <button type="submit" class="btn btn-primary mb-2" data-customer_id="@isset($customer_id){{$customer_id}}@endisset" id="addDossier"><i class="fa fa-plus" aria-hidden="true"></i></button>
  </form>
</div>

但是 jquery 无法再捕获 click 事件

我试图将所有脚本放在头上,或者创建要调用的函数,但效果不佳。还有其他解决方案吗?谢谢

标签: javascriptlaravelrendering

解决方案


在这里,$(dom).click()静态绑定事件,你应该尝试像这样注册你的点击事件函数:

$( '#addDossier' ).on( 'click', function (event) { your code});

动态绑定事件处理程序,在这里检查一下,你可以使用简写(function(){..})();代替,$(document).ready(function(){...});你应该考虑使用像 Vue/React 这样的现代东西。Jquery 是原始的并且越来越老。


推荐阅读