当您在drupal中使用“ use-ajax”类在对话框中创建链接时,页面加载时Drupal会初始化ajax链接。 我想更改ajax请求的网址以更改广告位日期。 下面的示例正在运行(在(Drupal.ajax中的var j之间){)之间,但是我需要更好的代码方式。
我正在使用fullcalendar_view模块,并且我正在更改模块代码,fullcalendar已经为$('#calendar-add-event')创建了一个链接,我只是使用相同的href,接下来要为$(' #calendar-add-event2')和下一次触发点击。
fullcalendar.html.twing
<div class="fullcalendar-bottom-btn add-event-btn">
<a id="calendar-add-event" href="{{ language }}fullcalendar-view-event-add?entity={{ entity_id }}&bundle={{ options.bundle_type }}&start_field={{ options.start }}&end_field={{ options.end }}&destination={{ path('<current>') }}" class="use-ajax" data-dialog-type="dialog" data-dialog-renderer="off_canvas" data-dialog-options="{"width":400}">{{ 'Add event'|t }}</a>
<a id="calendar-add-event2" href="{{ language }}fullcalendar-view-event-add?entity={{ entity_id }}&bundle={{ options.bundle_type }}&start_field={{ options.start }}&end_field={{ options.end }}&destination={{ path('<current>') }}" class="use-ajax" data-dialog-type="dialog" data-dialog-options="{"width":400}">{{ 'Add event triger'|t }}</a>
</div>
fullcalendar_view.js
$("#calendar").dblclick(function () {
if (slotDate && drupalSettings.eventBundleType && drupalSettings.dblClickToCreate && drupalSettings.addForm !== '') {
var date = slotDate.format();
href = $('#calendar-add-event').attr('href');
resHref = href.split('?');
ajaxLink = resHref[0] + '?start=' + date + '&' + resHref[1];
$('#calendar-add-event2').attr('href', ajaxLink);
for (var j in Drupal.ajax) {
if (j == 'instances') {
for (var t in Drupal.ajax[j]) {
try {
if (Drupal.ajax[j][t].selector == '#calendar-add-event2') {
// console.log(Drupal.ajax[j][t]);
// console.log(t);
// console.log(Drupal.ajax[j][t]);
Drupal.ajax[j][t].options.url = ajaxLink + '&_wrapper_format=drupal_dialog';
}
} catch (err) {
console.log(Drupal.ajax[j]);
}
}
}
}
$('#calendar-add-event2').trigger('click');
$('body').prepend("<div id='child-div'></div>");
}
});