【问题标题】:Data attributes not getting detected by JQueryJQuery 未检测到数据属性
【发布时间】:2021-01-26 09:22:51
【问题描述】:

我一直试图通过 JQuery 使用的 data 属性传递这些数据,但由于某种原因,当我在控制台记录它们时,其中一些是未定义的。正如您在图片中看到的,只有 $subscription->id$subscription->tax 变量被 JQuery 读取,而其余的未定义。

我正在使用laravel blade,这是负责将这些数据发送到JQuery的代码:

                <a 
                  class="btn btn-sm mt-1 btn-light btn-outline-dark col-12" 
                  href="#"
                  data-toggle="modal"
                  data-target="#edit-subscription-modal"
                  data-id="{{$subscription->id}}"
                  data-cId="{{$subscription->customer_id}}"
                  data-uId="{{$subscription->user_id}}"
                  data-pId="{{$subscription->product_id}}"
                  data-sDate="{{$subscription->startDate}}"
                  data-eDate="{{$subscription->endDate}}"
                  data-pTerms="{{$subscription->paymentTerms}}"
                  data-tax="{{$subscription->tax}}"
                  >Edit</a>

当我 dd() 刀片文件上的变量时,它们确实返回数据,但是当我在控制台中将它们登录到 JQuery 时,它们变成了 undefined。这是JQuery代码块:

$('#edit-subscription-modal').on('show.bs.modal', function (event) {
        var button = $(event.relatedTarget) // Button that triggered the modal
        var subscriptionId = button.data('id')
        var customerId = button.data('cId')
        var userId = button.data('uId')
        var productId = button.data('pId')
        var startDate = button.data('sDate')
        var endDate = button.data('eDate')
        var paymentTerms = button.data('pTerms')
        var tax = button.data('tax')
        var modal = $(this)
        
        console.log(subscriptionId)
        console.log(customerId)
        console.log(userId)
        console.log(productId)
        console.log(startDate)
        console.log(endDate)
        console.log(paymentTerms)
        console.log(tax)
        
        modal.find('.modal-body #subscription-id').val(subscriptionId)
    })

我尝试更改data attributes 的名称,但仍然没有雪茄。我希望有人能阐明这一点。

【问题讨论】:

  • $('#edit-subscription-modal').on 将其替换为 $('.className').on 并将该类添加到 a 标记
  • @KamleshPaul 也试过了,将 'edit-sub-modal' 类分配给锚标签并将$('#edit-subscription-modal').on 更改为$('.edit-sub-modal').on,当我这样做时它根本没有 console.log那
  • 嗨,检查this小提琴这是你需要的吗?
  • @Swati 谢谢,但是在尝试这个之后,console.log 只是返回所有未定义的数据:(
  • 但它在演示代码中工作。不确定是什么问题

标签: php jquery laravel laravel-blade


【解决方案1】:

您需要将类添加到&lt;a&gt; 标记,然后为该类收听click event,例如

<a 
class="btn btn-sm mt-1 btn-light btn-outline-dark col-12 subscription-modal-click" 
href="#"
data-toggle="modal"
data-target="#edit-subscription-modal"
data-id="{{$subscription->id}}"
data-cId="{{$subscription->customer_id}}"
data-uId="{{$subscription->user_id}}"
data-pId="{{$subscription->product_id}}"
data-sDate="{{$subscription->startDate}}"
data-eDate="{{$subscription->endDate}}"
data-pTerms="{{$subscription->paymentTerms}}"
data-tax="{{$subscription->tax}}"
>Edit</a>


<script>
    $('.subscription-modal-click').click(function(){
        var button = $(this) // Button that triggered the modal
        var subscriptionId = button.data('id')
        var customerId = button.data('cId')
        var userId = button.data('uId')
        var productId = button.data('pId')
        var startDate = button.data('sDate')
        var endDate = button.data('eDate')
        var paymentTerms = button.data('pTerms')
        var tax = button.data('tax')
        var modal = $(this)
        
        console.log(subscriptionId)
        console.log(customerId)
        console.log(userId)
        console.log(productId)
        console.log(startDate)
        console.log(endDate)
        console.log(paymentTerms)
        console.log(tax)
        
        modal.find('.modal-body #subscription-id').val(subscriptionId)
    })
</script>

【讨论】:

  • 做到了,但它显示了相同的结果。唯一传输和 console.logged 的​​数据是 $subscription-&gt;id$subscription-&gt;tax
  • @fael_ 那么数据不是来自数据库
  • 确实如此,当我dd() 变量时,它会显示数据。
  • 那么一半来了一半不是你需要检查a标签是否所有数据都在附加
【解决方案2】:

我已经弄清楚了,这与我刀片文件中数据属性的命名有关!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多