2015-01-08 50 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();