2017-02-09 5 views
-1

Я генерируя входы радио с пользовательской id так:Как вызвать динамический идентификатор в селекторе Jquery

foreach($paymentMethods['CustomPayment'] as $custompay) { 
    $html .= '<input type="radio" id="cnp_payment_method_selection_'.$custompay.'" name="cnp_payment_method_selection" class="cnp_payment_method_selection" style="margin: 0 0 0 0;" value="'.$custompay.'">&nbsp;<b>'.$custompay.'</b>&nbsp;&nbsp;&nbsp;'; 
} 

Я использую тот же идентификатор ниже в селекторе JQuery, но когда это динамический он не работает:

jQuery("#cnp_payment_method_selection_customay").click(function() { 
    jQuery("#cnp_CreditCard_div").hide();     
    jQuery("#cnp_eCheck_div").hide(); 
    jQuery("#cnp_Custompay_div").show(); 
}); 

Как я могу назвать этот динамический идентификатор в этом селекторе?

В $ custompay мы получим некоторые вещи, как этот обычай, custom1, Custom2 на основе этого идентификатора должно быть cnp_payment_method_selection_customay, cnp_payment_method_selection_customay1, cnp_payment_method_selection_customay2

, используя ниже код

foreach($paymentMethods['CustomPayment'] as $custompay) { 
       $html .='<script type="text/javascript"> 
         var simple = "cnp_payment_method_selection_'.$custompay.'"; 
         alert(simple); 

         </script>'; 

        //print_r($custompayment); 
       $html .= '<input type="radio" id="cnp_payment_method_selection_'.$custompay.'" name="cnp_payment_method_selection" class="cnp_payment_method_selection" style="margin: 0 0 0 0;" value="'.$custompay.'">&nbsp;<b>'.$custompay.'</b>&nbsp;&nbsp;&nbsp;'; 

       } 
       $html .= '</span>'; 

Где мой var simple получает Id, который я хочу, но теперь я хочу передать эту переменную вместо <input type="radio" id="cnp_payment_method_selection_'.$custompay.'" name="cnp_payment_method_selection" class="cnp_payment_method_selection" style="margin: 0 0 0 0;" value="'.$custompay.'">

переменный я хочу назвать место ид в качестве переменной

+1

Вы пытались проверить, как выглядит выглядевший HTML? – eddyP23

+0

когда динамическая добавили использование событие делегация – guradio

+0

У меня есть один идентификатор, но разные имена, как # cnp_payment_method_selection_customay, # cnp_payment_method_selection_customay1, # cnp_payment_method_selection_customay2, # cnp_payment_method_selection_customay3 некоторые вещи, как это я хочу на основе выбора хита идентификатора –

ответ

0

Вы можете использовать «начинается с» селектором, чтобы идентифицировать элементы:

$('input[id^=cnp_payment_method_selection_]') 

Это возвратит вам все элементы, которые имеют идентификаторы, начинающиеся с cnp_payment_method_selection_.

https://api.jquery.com/attribute-starts-with-selector/

+0

Мне не нужны все с определенной переменной, только я хочу $ custompay –

0

Они не одинаковы.

id="cnp_payment_method_selection_'.$custompay.'" 
jQuery("#cnp_payment_method_selection_customay").click(function(){ 

Вы можете получить идентификатор с параметрами данных.

foreach($paymentMethods['CustomPayment'] as $custompay) { 
        $html .= '<input type="radio" data-id="'.$custompay.'" name="cnp_payment_method_selection" class="cnp_payment_method_selection" style="margin: 0 0 0 0;" value="'.$custompay.'">&nbsp;<b>'.$custompay.'</b>&nbsp;&nbsp;&nbsp;'; 
        } 

jQuery(".cnp_payment_method_selection_customay").click(function(){ 
     var id = $(this).data('id'); 
     }); 
+0

да, они не такие, я хочу, чтобы сгенерированный идентификатор вызывал в селекторе –

0

Вы можете использовать jQuery.add метод для создания динамического выбора (Вы можете перебирать $ paymentMethods [ «CustomPayment»] и добавить элемент к селектору)

var selector = $();//an empty selector 
foreach($paymentMethods['CustomPayment'] as $custompay) { 
    selector.add('#cnp_payment_method_selection_'.$custompay);//add a $custompay to the selector 
} 
+0

Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно того, почему и/или как этот код ответ на этот вопрос улучшает его долгосрочную ценность. –

+0

вы правы @DonaldDuck, я добавил некоторый контекст –

0

Как я могу видеть , Я думаю, что вы пытаетесь сгенерировать некоторый inut-тип с разными идентификаторами, после чего вы вставляете этот тип динамического ввода в любой элемент страницы.

Итак, если вы создаете динамический элемент и добавляете в DOM, вы не можете дать им прямой клик, который не будет работать. Для этого вам необходимо обратиться через родительский элемент и использовать .on.

Если вы генерируете элементы, как показано ниже.

foreach($paymentMethods['CustomPayment'] as $custompay) { 
    $html .= '<input type="radio" id="cnp_payment_method_selection_'.$custompay.'" name="cnp_payment_method_selection" class="cnp_payment_method_selection" style="margin: 0 0 0 0;" value="'.$custompay.'">&nbsp;<b>'.$custompay.'</b>&nbsp;&nbsp;&nbsp;'; 
} 

И пусть после этого добавления вашего $ HTML для элемента, имеющего класс контейнера, как показано ниже

$(".container").html($html); 

Затем вы даете щелчок событие ввода вам необходимо предоставить с помощью .он и ссылок от родительского (здесь .контейнер), как показано ниже.

$(".container").on('click','#cnp_payment_method_selection_customay', function() { 
// your stuff here 

}); 
+0

, но в этом ид $ ("контейнер"). На ('нажмите', '# cnp_payment_method_selection_customay', функция() {// ваш материал здесь }); –

+0

где cnp_payment_method_selection_customay, где отличается от каждого радио –

+0

, используя переменную $ (this) в событии click, вы можете получить $ (this) .val(); , но я думаю, что вы хотите дифференцировать на основе щелкнутого события, тогда вам не нужно устанавливать разные идентификаторы. Просто используйте свой класс как <входной тип = "радио" класс = значение "cnp_payment_method_selection" = "$ custompay." /> и дать событие щелчка, используя $ (». Контейнер"). На (» click ',' cnp_payment_method_selection ', function() { // ваши вещи var clicked_rd_value = $ (this) .val(); }); , используя значение радиостанции, доступное по вашему желанию. –

Смежные вопросы