Я пытаюсь скрыть все li
в div
, который генерируется динамически, когда пользователь нажимает кнопку. Содержимое div
извлекается через вызов Ajax, и я затем назначаю div на странице.
По какой-то причине любая попытка изменить стиль с помощью jQuery не имеет никакого эффекта. Я заметил, что я также должен применить $(selector).live('click, callback)
при попытке вызвать клик.
$.ajax({
url: "admin.php",
cache: false,
data: ({
'module':'data',
'action':'actionName',
'clientname':formatted
}),
success: function(data) {
$('#outputDiv').html(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
if(textStatus == "error") {
$('#outputDiv').append("Sorry, but there was an error");
}
}
});
The 'data' variable returned to the success method is a nested list set e.g. <ul id='tree'><il><a></a></li></ul> etc
What I'm trying to do after the load is hide all children in this case I'd call $(' #tree > li').hide(); A trigger will then occur when the use clicks the anchor tag with:
$('a.viewdetails').click(function() {
$(this).next('ul').toggle();
});
Редактировать 1
Итак, теперь я реализовал решение, упомянутое ниже, но я не могу заставить загрузку работать правильно, похоже, что она не отправляет параметры url, отформатированный выше и может состоять из пробелов и т. Д.
var containerDiv = $('div#clientBusinessUnits'),
liClickHandler = function(e) {
$('a.viewdetails').click(function() {
alert('1');
});
},
loadCompleteHandler = function(responseText, textStatus, XMLHttpRequest) {
console.log(responseText);
console.log(textStatus);
$('li', containerDiv).click(liClickHandler);
};
containerDiv.load("admin.php?module=data&action&getData&clientname="+formatted, loadCompleteHandler);