【问题标题】:How to get form element seen in DOM and not in source code?如何在 DOM 中而不是在源代码中看到表单元素?
【发布时间】:2016-10-18 16:19:23
【问题描述】:

我们在我们的一个 Drupal 安装中使用了 marketo 表单,我正在尝试在单击按钮时添加一个单击事件。但是当我查看源代码时,我看不到 from 元素。但是,我可以在 DOM 检查器上看到它。

这是我在视图源上看到的。

<form class="marketo-form-wrapper"
  data-formid="####"
  data-campaign="######"
  data-file="####"
 id="####">

检查元素截图附后。

无论我做什么,单击提交按钮时都无法调用单击函数。 我可以做到这一点

$('.marketo-form-wrapper').click(function (e)  {          
 console.log('clicked');});

我不希望在用户单击表单包装器时调用此函数。我希望在单击实际按钮时调用它。

如果我这样做,什么都不会出现。

$('.marketo-form-wrapper .mktoButtonRow:button').click(function (e) {
console.log('clicked');});

【问题讨论】:

  • 委托事件处理动态元素:$('.marketo-form-wrapper').on('click', ' .mktoButtonRow:button', function (e) {...});

标签: jquery drupal-7 marketo


【解决方案1】:

使用委托选择器。

$('.marketo-form-wrapper').on("click",".mktoButton",function(){
    console.log("clicked");
});

这将在 DOM 加载后添加的 .marketo-form-wrapper 类中的任何具有 .mktoButton 类的元素应用点击处理程序。您的问题是哪种情况。

【讨论】:

  • 天哪。我不知道该怎么感谢你才足够。这工作得很好。
  • 我不认为这就是它的工作原理。委托事件处理程序在.marketo-form-wrapper 上应用事件侦听器,然后如果目标是.mktoButton,则基本上将其过滤掉,它实际上并未将侦听器应用于.mktoButton
  • 我的解释可能不正确,您可能是正确的。但这确实是 OP 所需要的。
猜你喜欢
  • 1970-01-01
  • 2016-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2017-12-08
相关资源
最近更新 更多