2015-07-31 2 views
0

У меня есть страница (index.php), который содержит DIV динамически загружать содержимое:нагрузки в DIV с JQuery - Div содержит внешний

<div id='#container'></div> 

В этом DIV я динамически нагружать внешнюю страницу, используя следующий :

$(this).on('click', '.subNav', function() { 
    var subSectionId = this.id; 
    $("#content").load('pages/content.php?id=' + subSectionId); 
}); 

у меня проблема заключается в следующем: на странице content.php есть кнопка (класс .tblSort), что при нажатии на потребности перезагрузить content.php внутри DIV «#content». У меня есть следующий код JQuery:

$(this).on('click', '.tblSort', function() { 
    var subSectionPageId = $("#subSectionId").val(); 
    var orderBy = this.id; 
    $("#content").load('/pos2/pages/content.php?id=' + subSectionId + '&orderBy=' + orderBy); 
}); 

Это не работает, и я предполагаю, что это связано с тем, что ДИВ «#content» находится в файле index.php и кнопки (класс .tblSort) находится в файле content.php. Каким образом это происходит?

+2

'$ (это) .он ... '? Что такое «это»? Вы не указываете, что вы нажимаете. –

+0

Если кнопка находится внутри content.php, вам нужно будет снова подключить к ней прослушиватель событий. Если «это» не является делегатом. – Daniel

+0

@ Джэй Бланшар, этот код работает. Он задается классом «.subNav», т.е. когда любые кнопки на странице с классом .subNav id передаются функции. –

ответ

0

Здесь вместо этого вы можете использовать тело или элемент DIV родительский, который не меняется на время выполнения.

$('body').on('click', '.tblSort', function() { 
    var subSectionPageId = $("#subSectionId").val(); 
    $("#content").load('/pos2/pages/content.php?id=' + subSectionId); 
}); 
+0

, но с этим кодом I не будет передавать идентификатор кнопки функции? Код, который я опубликовал, был фактически упрощен. Мне нужно получить идентификатор кнопки, нажатой. Я редактировал сообщение. –

+0

alert ($ (this).Attr ('ID')); Попробуйте это в событии click, посмотрите, получаете ли вы правильный идентификатор, если так просто добавьте его и передайте его. – JParkinson1991

1

Попробуйте обернуть событие нажатия кнопки в событии ajax complete.

I imagien вы определяете событие щелчка в документе готов и что происходит в том, что JQuery не может найти элемент указательный его на начальном этапе.

попробовать что-то вроде этого ..

//When all dom elements are ready on a page (images wont be loaded at this point) 
$(document).ready(function(){ 

    //On click of the container, load the content from external source 
    //Probably not clicking the container so change selector 
    $("#container").on('click', function(){ 
     $("#content").load('pages/content.php?id=' + this.id); 
    }); 

}); 

//.load() is an ajax call just wrapped up friendly, so attach an ajax complete event. 
$(document).ajaxComplete(function(){ 

    //On the tblSort button click (dynamically loaded in #content above) 
    $("#content .tblSort").on('click', function(){ 
     $("#content").load('/pos2/pages/content.php?id=' + $("#subSectionId").val()); 
    }); 

}); 

Дайте что попробовать. Не проверено так не уверен, что это сработает для вас, но я не понимаю, почему нет.

UPDATE

Обновление ответа из-за замечания OP в. Уведомление #container изменилось на #button @OP: обновить этот селектор, чтобы соответствовать вашим потребностям и извлечь идентификатор, как описано.

//When all dom elements are ready on a page (images wont be loaded at this point) 
$(document).ready(function(){ 

    //On click of the container, load the content from external source 
    //Probably not clicking the container so change selector 
    $("#button").on('click', function(){ 
     $("#content").load('pages/content.php?id=' + $(this).attr('id')); 
    }); 

}); 

//.load() is an ajax call just wrapped up friendly, so attach an ajax complete event. 
$(document).ajaxComplete(function(){ 

    //On the tblSort button click (dynamically loaded in #content above) 
    $("#content .tblSort").on('click', function(){ 
     $("#content").load('/pos2/pages/content.php?id=' + $("#subSectionId").val()); 
    }); 

}); 
+1

Проблема в том, что мы даже не знаем, что задает OP на этом этапе. –

0

Попробуйте это будет работать,

$(document).ajaxComplete(function(){ 
     //On the tblSort button click (dynamically loaded in #content above) 
     $("#content").on('click','.tblSort', function(){ 
      $("#content").load('/pos2/pages/content.php?id=' + $(this).parent().val()); 
     }); 

    }); 

ИЛИ

$(document).ajaxComplete(function(){ 
    //On the tblSort button click (dynamically loaded in #content above) 
    $("#content").on('click','.tblSort', function(){ 
     $("#content").load('/pos2/pages/content.php?id=' + $(this).parent().find("#subSectionId").val()); 
    }); 

}); 

Если вы не можете запустить затем разделить ваш точный код и объяснить

Смежные вопросы