2015-01-08 48 views
2

我已动态生成的ID通过PHP:如何通过jQuery选择动态生成的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(); 

不工作

谢谢!

+2

您应该设置一个类来选择,比如'$( 'WP-提交注册')。VAL()'。 – lighter

+0

如果ID是动态的,那么我不明白为什么你想要将事件绑定到具有该特定ID的特定元素。如上所述,您应该使用类。 –

+0

而且是那个WordPress,如果有的话,还有一种特殊的方式可以将值传递给你的脚本。 – adeneo

回答

0

如果您要将内嵌的<script>标记作为您生成的页面的一部分输出该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(); ?>" 
+0

你怎么知道'$ template-> the_instance()'还没有回显一个值? –

+0

@ChristianVarga好点。我甚至没有意识到它的假设。感谢您指出了这一点。 –

0

你不需要id。使用$('.register')

编辑 OK,你可以通过$('input[type=submit].register')

得到它,因为它从来没有混合服务器端和客户端语言是个好主意

+1

一个类被设计用于几个不同的元素。假设他在多个字段中使用'.register'。您的解决方案是否仍适用? –

+0

@JamesMcDonnell,是的,它会选择这个输入作为OP问,'提交'你可以执行任何验证:id,类型等 – vladkras

+0

但是,如果你有十个元素具有相同的类,它会选择所有十个元素 – adeneo

1

指定的名称wp-submit和变量$template->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();