Я не смог найти ни одного обсуждения того, с чем я борюсь на этом сайте или в любом другом, но, возможно, я не задаю правильный вопрос. Я работаю на веб-интерфейс для беспроводной динамик питается от малинового пи, и (как я унаследовал) почти все запросы POST выполняются с вызовами $.ajax.
$().ready()
выглядит следующим образом:JQuery - элементы таргетинга, которые были изменены после загрузки страницы
$().ready(function(){
$(document).ajaxStart(function(){
$.blockUI({ message: '<img id="loadimg" src="img/loading.gif" width="64" />'});
}).ajaxStop($.unblockUI);
$("nav.setup-nav a").not("[target='_blank']").on("click", function (event){
event.preventDefault();
var href=$(this).attr('href');
$.ajax({
type:"POST",
url:href,
success:function (data){
$(".contentPanel").html(data);
$(this).blur();
$("html, body").animate({ scrollTop:100, scrollLeft:400}, 600);
},
});
return false;
});
});
какие силы все содержимое связанных страниц в навигационном меню для загрузки внутри div в центре страницы. То есть, за исключением страниц с атрибутом target="_blank"
. Это так event.preventDefault
, и блокировка пользовательского интерфейса не вызывается при ссылке на внешнюю страницу, которую мы хотим загрузить в новом окне. Я попытаюсь кратко описать мою проблему: одним из пунктов меню является (условно) ссылка на веб-клиент MPD, который мы определенно НЕ хотим загружать внутри div на той же странице и, следовательно, имеет атрибут target="_blank"
, Проблема заключается в том, что пользователь может также включить или отключить демон MPD через веб-интерфейс. PHP обрабатывает настройки всех этих переменных состояния. В принципе, как это:
if ($config->is_flag_set($MPD_FLAG))
{
echo '<li><a target="_blank" id="mpd" href="rompr/">Local Playback Web Interface</a></li>';
}
else
{
echo '<li><a id="mpd" href="local-disabled.php">Local Playback Web Interface</a></li>';
}
и поэтому при первой загрузке страницы, если демон MPD не работает ссылка на веб-интерфейс направлен на страницу, которая объясняет MPD не включен. Эта ссылка НЕ содержит атрибут target="_blank"
. Однако, если вы переходите к форме настроек и включаете MPD, существует логика для замены атрибутов href и target этой конкретной ссылки, поэтому теоретически все должно работать так, как если бы страница сначала загружалась с флагом MPD (если это Чисто!). Проблема в том, что, когда ссылка «заменена» с target="_blank"
(установлена .prop()
или .attr()
, я пробовал и то, и другое, похоже, не имеет значения) щелкнул, страница все еще загружается внутри div! Я попытался дублировать обработчик кликов, который определен в пределах $().ready
и помещает его в другую функцию, которую я вызываю после того, как установлены атрибуты ссылки, но она по-прежнему не работает, как я себе представляю! Просто чтобы убедиться, что я не сумасшедший, я использовал .each()
, чтобы напечатать все ссылки, которые сделали и не имеют атрибута target="_blank"
, и что все это соответствует тому, что я считаю. Почему заменяемая ссылка не обрабатывается так, как будто она имеет атрибут target="_blank"
в обработчике кликов? Кстати, Идти другим способом и удаляя атрибут target="_blank"
, если MPD выключен, он работает как шарм. Большое спасибо за любые ответы и мои извинения, если я повторил предыдущий вопрос!
Приветствия,
Thats the ticket. Теперь я чувствую себя глупо - родительский элемент nav никогда не изменяется, я просто забыл, что вы можете передать аргумент селектора '.on()'! Благодаря! – jhansen317