Массовая обработка div'ов
Имеется html-код
<div id="GetString21"><div> <div id="GetString22"><div> <div id="GetString23"><div> мне нужно получить значение id в div'e и отправить post'ом в php-скрипт, результат поместить в этот же тэг и перейти к обработке следущего. непонятно какую функцию цеплять на $("div") чтобы она поочердно проходила по всем элеметам. буду очень признателен если поможете :) |
.each(function(){})
перебирет все элементы |
получился такой код:
$(document).ready(function(){ $("div[id]").each(function(){ var sID = $(this).attr("id"); $.post('test.php', {'param': $(this).attr("id")}, function(data) { $("div#"+sID+" p").text(data) }); }); }); что-то мне не нравится. пришлось в div'ы добавить тэг p и в него заполнять ответ от php скрипта. если заполнять в этот же тэг то выводится только 1-ый тэг почему то |
Замыкания
$(function(){ $("div[id]").each(function(){ (function(sID) { $.post('test.php', {'param': sID}, function(data) { $("div#"+sID+" p").text(data); }); })($(this).attr("id")); }); }); Почему не послать на сервер сразу все идентификаторы в одном запросе? |
Спасибо большое, немного неясен код но с этим разберусь. А можно ли как нить сделать чтобы вместе $("div#"+sID+" p") было просто $("div#"+sID)? Потому что при таком раскладе показывается только верхняя строчка
|
хотя нет, поспешил я, тут лишняя обертка не нужна
$(function(){ $("div[id]").each(function(){ var sID = $(this).attr("id"); $.post('test.php', {'param': sID}, function(data) { $("#" + sID).text(data); }); }); }); должны все div'ы обработаться, не знаю почему у вас только первая строчка показывается. Выложите на каком-нибудь сервере страничку, чтобы посмотреть. |
Выложить к сожалению на сервер не могу, могу только дать исходники.
index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Web PtokaX</title> <link href="style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="test.js"></script> </head> <body> <div id="GetString21"><div> <div id="GetBool22"><div> <div id="GetNumber23"><div> </body> </html> test.js $(function(){ $("div[id]").each(function(){ var sID = $(this).attr("id"); $.post('test.php', {'param': sID}, function(data) { $("#" + sID).text(data); }); }); }); test.php <?php if (isset($_POST['param'])) echo $_POST['param']; ?> Результат GetString21 |
Цитата:
|
О господи, вот растяпа. Прошу прощения не заметил) спасибо!
|
Вот за что я не люблю jQuery, всегда идет работа с коллекцией элементов, даже если в ней один элемент или вообще ничего нет. В данном случая коллекция получается пустой, и действие не выполняется, при этом не возникает никаких ошибок, попробуй пойми, что не так.
|
Часовой пояс GMT +3, время: 10:55. |