いくつかのリンクのコンテンツをポップアップに表示したいサイト(カスタムコンポーネントとテンプレート)で作業しています。ポップアップ自体は正常に機能しているようですが、ajaxで呼び出されたときに、選択ボックスがformbehavior.chosenの影響を受けないことに気付きました。
私はサイトパーツのcomponent.phpのJHtml::_('formbehavior.chosen', 'select');
で選択したものを適用しています。 AJAXコンテンツはformat = rawで読み込まれるので、これを実際のコンポーネントテンプレートファイルに入れればうまくいくのではないかと思いましたが、うまくいきませんでした。すべてのセットセレクターに選択を再適用しますが、1つは見つかりません。
私の選択メニューをajaxロードで選択されたスタイルにする方法は何ですか?
コンポーネントのcomponent.phpファイルは次のようになります。
<?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();
ポップアップはテンプレート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');
});
});
});
コードの下を変更:
$.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();
});