2013-05-19 3 views
0

Когда у меня есть:Multiple запрос Ajax 1 клик

$('#blah').on('click', function(){ 
    $.ajax({ 
     //blah 
    }) 
}); 

Я прекрасно работает, выше кода сделать запрос Ajax только один раз, но когда у меня есть:

$('body').on('click', '#blah', function(){ 
    $.ajax({ 
     //blah 
    }) 
}); 

Это один посылает ajax много раз, иногда дважды, а иногда и больше. И я должен использовать второй код, так как объект #blah сам добавляется на страницу другим ajax-запросом, первый код не работает.

В чем проблема? Я также использовал return false; в конце кода, но не работал ....

Буду признателен за любую помощь.


MORE INFO:

Скажем, у меня есть контейнер, и есть кнопки внутри контейнера, сам контейнер загружен более ранним АЯКС запроса, что-то вроде:

$('a[rel="show_product_detail"]').on('click', function(){ 
     var product_id = $(this).attr('id'); 
     $('.companycontent').html(''); 
     $('.companycontent').addClass('members_content_loading'); 
     $('.companycontent').load('modules/companies/companies_tabs/product_details.php?product_id='+ product_id', function() { 
      $('.companycontent').removeClass('members_content_loading'); 
     }); 
     return false; 
    }); 

В настоящее время в в контейнере у меня есть другие кнопки, которые вызывают новое содержимое для контейнера, для этих кнопок я должен использовать второй код, так как кнопки загружаются через ajax. теперь, нажимая на кнопки внутри контейнера, запросы ajax отправляются много раз (в зависимости от времени перезагрузки контейнера).

+0

Можете ли вы показать, как вы добавляете новый элемент из запроса AJAX? – Dogbert

+0

Я не видел $ ('body'). On ('click', '#blah', function() раньше. То, что я видел, это $ (document) .on ('click', '#blah' , function(). Не могли бы вы попробовать? – alkis

+0

Можем ли мы увидеть HTML? от '# blah' до' body'. – Joseph

ответ

-1

после «успеха» обжигают в первом запросе, вы добавить динамическое содержимое страницы после того, как его сделали, после кода вы связываете, что храповой слушателя

$.ajax({ 
//... 

success:function (data){ 
$(data).appendTo(".companycontent"); //inserts #blah 
$("#blah").bind("click",function(){ 
//ajax code 
}) 

}); 

или Вы можете построить новый объект и сделать случаи, когда вам нужно

function AJAX(){ 
this.url=""; 
this.control=""; 
this.run = run;` 
} 

function run(){ 

$.ajax({ 

url:this.url, 

success:function (data){ 
$(data).appendTo(".companycontent"); //inserts #blah 
$("#blah").bind("click",function(){ 
// 
}); 
} 
}); 

и, наконец, получить новый экземпляр и инициализировать объект. этот объект будет очень приятно, если вы измените его лучше

var test= new AJAX(); 
test.url="myajax.com/ajax"; 
test.control=Get_news(); // for example a click event 
test.run(); 
+0

Я не хочу писать все коды много раз на многих страницах, это звучит не очень хорошо – behz4d