2015-11-28 1 views
0

Im appending (или дублирование другими словами) a <form> который включает выпадающий список - все мои выпадающие списки используют Chosen jQuery plugin.Плагин jQuery не работает - он добавлен

ПРОБЛЕМА: раскрывающееся меню приложенной формы не работает!

Как заставить его работать, когда он прилагается?

Очевидно, проблема заключается в том, что сценарий jQuery не привязан к новому/добавленному раскрывающемуся списку, потому что HTML 100% такой же, но как это сделать?


<form class="my-form"> 
    <div class="new-item row"> 
    <select name="transport-type[]"> 
     <option value=""><?php _e('Type', 'tt'); ?></option> 
     <option value="coach"><?php _e('Coach', 'tt'); ?></option> 
     <option value="diesel-train"><?php _e('Diesel Train', 'tt'); ?></option> 
     <option value="electric-train"><?php _e('Electric Train', 'tt'); ?></option> 
     <option value="trolley"><?php _e('Trolley', 'tt'); ?></option> 
     <option value="tram"><?php _e('Tram', 'tt'); ?></option> 
     <option value="city-bus"><?php _e('City Bus', 'tt'); ?></option> 
     <option value="shuttle"><?php _e('Shuttle', 'tt'); ?></option> 
    </select> 
    </div> 
</form> 

<div class="clearfix"> 
    <a class="add-new btn"><?php _e('Add New','tt'); ?></a> 
</div> 



<?php 

//All JS is on different file & is included before HTML 

//Fires up/"attaches" Chosen.js to select 
jQuery('select').chosen({ 
    disable_search: false, 
    disable_search_threshold: 10, 
    width: '100%' 
}); 

//Add new 
jQuery(document).on('click', '.add-new', function() { 
    newGroup = jQuery('.new-item').html(); 
    jQuery('.my-form').append('<div class="new-item row">'+newGroup+'</div>'); 
}); 

ответ

0

Вы должны захватить HTML .new-item «s, прежде чем он преобразуется выбран.

Попробуйте это:

//Fires up/"attaches" Chosen.js to select 
var newGroup = jQuery('.new-item:first').html(); 
jQuery('select').chosen({ 
    disable_search: false, 
    disable_search_threshold: 10, 
    width: '100%' 
}); 

//Add new 
var group_id = 0; 
jQuery(document).on('click', '.add-new', function() { 
    group_id++; 
    jQuery('.my-form').append('<div class="new-item row" id="group_' + group_id + '" >'+newGroup+'</div>'); 
    jQuery('#group_' + group_id + ' select').chosen({ 
     disable_search: false, 
     disable_search_threshold: 10, 
     width: '100%' 
    }); 
}); 

Fiddle:http://jsfiddle.net/trex005/qfvhyg4y/

+0

я не могу назовите его несколько раз, потому что он «делает» два выпадающих списка - один работает, а другой нет. Не могли бы вы привести пример, основанный на моем коде, что вы думаете, когда говорите о сгенерированном идентификаторе? – Solo

+0

Мне нужно будет увидеть ваш код, который генерирует 'newGroup' (формально известный как' transportGroup') – trex005

+0

Спасибо! Я попробую ваше предложение, как только смогу. 'newGroup = jQuery ('. new-item'). html();' действительно так просто - ничего больше не добавлять. – Solo

0

переместить свой скрипт в конец вашего HTML кода или поместить скрипт в document.ready

$(document).ready(function() { 
     $('select').chosen({ 
       disable_search: false, 
       disable_search_threshold: 10, 
       width: '100%' 
     }); 
}); 
+0

Я боюсь, что это ничего не изменит - сценарий jQuery по-прежнему не привязан к добавленному элементу. – Solo

+0

используйте идентификатор для своего выбора и попробуйте что-нибудь вроде этого $ ('# select-id') для выбора этого элемента с помощью селектора jquery –

+0

закройте php-код и поместите свои скрипты в тег скрипта –