web-dev-qa-db-fra.com

Choisi sur AJAX content

Je travaille sur un site (composant personnalisé et modèle) où je souhaite que certains liens aient leur contenu affiché dans une fenêtre contextuelle. Le popup lui-même semble bien fonctionner, mais j'ai remarqué que les champs de sélection ne sont pas affectés par formbehavior.chosen, lorsqu'il est appelé avec ajax.

J'applique choisi avec JHtml::_('formbehavior.chosen', 'select'); dans mon composant.php sur la partie de site. AJAX le contenu est chargé avec format = raw, alors je pensais que cela fonctionnerait si je mettais cela dans le fichier de modèle de composant, mais cela ne fonctionnait pas. Je pensais que leur contenu pourrait être une fonction réappliquez choisi à tous ses sélecteurs d'ensembles, mais n'en avez pas trouvé.

Quel serait le chemin à suivre pour que mes menus sélectionnés soient choisis sous le style ajax load?

Le fichier components.php de composants ressemble à ceci:

<?php

// No direct access to this file
defined('_JEXEC') or die('Restricted access');

// Require helper file
JLoader::register('ComponentHelper', JPATH_COMPONENT . '/helpers/component.php');

// Add Stylesheets
JHtml::stylesheet('com_component/style.css', array(), true);

// Add Scripts
JHtml::_('bootstrap.framework');
JHtml::script('com_component/script.js', false, true);

// Add chosen
JHtml::_('formbehavior.chosen', 'select');

// Get an instance of the controller
$controller = JControllerLegacy::getInstance('Component');

// Perform the Request task
$input = JFactory::getApplication()->input;
$controller->execute($input->get('task'));

// Redirect if set by the controller
$controller->redirect();

La popup est appelée avec les templates template.js

jQuery(function($) {
    $('a.popup')
        .click(function() {
            event.preventDefault();

            var url = $(this).attr('href') + '&format=raw';

            $('#popupDialogue .popup-content').html('');
            $('#popup')
                .addClass('active')
                .addClass('loading');

            $.get( urlGet, function( data ) {
                $('#popupDialogue .popup-content').html(data);
                $('#popup')
                    .removeClass('loading');
            });
        });
});
3
Tom

Changer le code ci-dessous:

$.get( urlGet, function( data ) {
  $('#popupDialogue .popup-content').html(data);
  $('#popup')
    .removeClass('loading');
});

à

$.get( urlGet, function( data ) {
  $('#popupDialogue .popup-content').html(data);
  $('#popup')
    .removeClass('loading');
  $('#popupDialogue .popup-content select').chosen();
});
1
Nagarjun