【问题标题】:How I can select dynamic generated Id by jQuery?如何通过 jQuery 选择动态生成的 Id?
【发布时间】:2023-03-11 06:12:01
【问题描述】:

我有 PHP 动态生成的 ID:

 <input type="submit" class="btn btn-primary register" id="wp-submit<?php $template->the_instance(); ?>" value="Register" />

我如何通过 jquery 选择这个输入?

$('#wp-submit<?php $template->the_instance(); ?>').val();

不工作

谢谢!

【问题讨论】:

  • 你应该设置一个类来选择,比如$('.wp-submit-register').val()
  • 如果 ID 是动态的,那么我不明白您为什么要将事件绑定到具有该特定 ID 的特定元素。如上所述,您应该改用一个类。
  • 那是Wordpress吗,如果是的话,有一种特殊的方法可以将值传递给您的脚本。
  • 如果这是唯一具有动态 id 的按钮?你可以使用$('input[id^="wp-submit"]').val();,这将选择以关键字“wp-submit”开头的任何id
  • 这个页面有多个提交按钮吗?

标签: php jquery select dynamic


【解决方案1】:

鉴于名称 wp-submit 和变量 $template-&gt;the_instance(),我猜是 Wordpress

在 Wordpress 中执行此操作的正确方法是在包含脚本时本地化脚本,并以这种方式将值传递给脚本

<?php

    wp_register_script( 'my_script', 'path/to/myscript.js', array( 'jquery' ));

    $values_to_pass = array( 'instance' => $template->the_instance() );

    wp_localize_script( 'my_script', 'object_name', $values_to_pass );

    // The script can be enqueued now or later.
    wp_enqueue_script( 'my_script' );

?>

现在您可以在您的 javascript 文件中进行操作

$('#wp-submit' + object_name.instance ).val();

【讨论】:

    【解决方案2】:

    如果您将内联 &lt;script&gt; 标记中的 js 代码作为您正在生成的页面的一部分输出,那么您需要做的就是在 PHP 中添加一个 echo。 (这不能作为外部 JS 文件的一部分)

    ... page content
    <script>
       $('#wp-submit<?php echo $template->the_instance(); ?>').val();
    </script>
    

    注意 - 您还需要对 ID 属性执行相同操作以显示值。

    id="wp-submit<?php echo $template->the_instance(); ?>"
    

    【讨论】:

    • 你怎么知道$template-&gt;the_instance() 还没有回显值?
    • @ChristianVarga 好点。我对此做了一个假设,甚至没有意识到。感谢您指出这一点。
    【解决方案3】:

    你不需要身份证。使用$('.register')

    编辑好的,你可以通过$('input[type=submit].register')得到它

    因为混合服务器端和客户端语言从来都不是一个好主意

    【讨论】:

    • 一个类被设计用于几个不同的元素。假设他在多个字段中使用.register。您的解决方案是否仍然适用?
    • @JamesMcDonnell,是的,它会按照 OP 的要求选择此输入,on submit 您可以执行任何验证:id、类型等。
    • 但是如果你有十个同一个类的元素,它将选择所有十个元素
    • @adeneo 当然,很明显将提交事件绑定到页面上的所有“注册”按钮(即使它们是多个,尽管我认为它是单独存在的)然后检查
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2014-10-05
    • 2013-02-10
    • 2018-12-10
    • 1970-01-01
    • 2016-04-29
    • 2018-02-10
    相关资源
    最近更新 更多