Цитата:
но из примера я не понял как это использовать в моем случае. приведу пример своего кода: j("#on").bind('click', on); j('#off').unbind('click', off); <?php /* кликаем на .boxOn > вываливается панель #panel */?> function on(onObj){ j("#off").unbind('click'); j(".panel").attr('id','panelON').slideDown("slow"); <?php /* присваиваем уникальный id каждому элементу vozrast */ ?> j(".panel div").attr('id',function(index){return 'on_'+index;}).addClass("vozrast_On").removeClass("vozrast_Off"); <?php /* выводим кнопки, ловим клик и обрабатываем AJAX */?> j("#on_0").one("click", function(){ajaxURL(".boxLeft", "&query=on", "&age=0", "<?=$id;?>");}); j("#on_1").one("click", function(){ajaxURL(".boxLeft", "&query=on", "&age=1", "<?=$id;?>");}); j("#on_2").one("click", function(){ajaxURL(".boxLeft", "&query=on", "&age=2", "<?=$id;?>");}); j("#on_3").one("click", function(){ajaxURL(".boxLeft", "&query=on", "&age=3", "<?=$id;?>");}); j("#on_4").one("click", function(){ajaxURL(".boxLeft", "&query=on", "&age=4", "<?=$id;?>");}); j("#on_5").one("click", function(){ajaxURL(".boxLeft", "&query=on", "&age=5", "<?=$id;?>");}); footer(".vozrast_On"); //onObj.stopPropagation(); } но так не правильно, так как все равно идет 2 запроса а если поставить: j("#on").bind('click', on); j('#on').unbind('click', on); то список с возрастом не вываливается. логики уловить не могу.. |
Цитата:
соответственно и снимать события надо с них же.перед тем, как выставить новые. вот примерный код - не проверял на рабочесть, но суть такова: <script type="text/javascript"> var j = jQuery; function footer(OnOff){ j(OnOff).click(function(){ j(".panel").slideUp("slow"); j(".boxOn").css({'display':'none'}); j(".boxOff").css({'display':'none'}); j(".center").css({'display':'block'}); return false; }); } function ajaxURL(box, rat, age, objid){ j(box).html('<div class="load"></div>'); j.ajax({ type:"POST", url:"ajax.index.php", data:"option=com_kino&task=vote"+rat+age+"&id=<?=$id;?>", cache:false, success:function(html){j(box).html(html);} }); } j(document).ready(function(){ var fns=[null,null,null,null,null,null];//массив запомненных обработчиков события j(".center").css({'display':'none'}); <?php /* кликаем на .boxOn > вываливается панель #panel */?> j("#on").bind("click", function(){ j(".panel").attr('id','panelON').slideDown("slow"); <?php /* присваиваем уникальный id каждому элементу vozrast */ ?> j(".panel div").attr('id',function(index){return 'on_'+index;}).addClass("vozrast_On").removeClass("vozrast_Off"); <?php /* выводим кнопки, ловим клик и обрабатываем AJAX */?> j("#on_0").unbind('click',fns[0]).one("click", fns[0]=function(){ajaxURL(".boxLeft", "&query=on", "&age=0", "<?=$id;?>");}); j("#on_1").unbind('click',fns[1]).one("click", fns[1]=function(){ajaxURL(".boxLeft", "&query=on", "&age=1", "<?=$id;?>");}); j("#on_2").unbind('click',fns[2]).one("click", fns[2]=function(){ajaxURL(".boxLeft", "&query=on", "&age=2", "<?=$id;?>");}); j("#on_3").unbind('click',fns[3]).one("click", fns[3]=function(){ajaxURL(".boxLeft", "&query=on", "&age=3", "<?=$id;?>");}); j("#on_4").unbind('click',fns[3]).one("click", fns[4]=function(){ajaxURL(".boxLeft", "&query=on", "&age=4", "<?=$id;?>");}); j("#on_5").unbind('click',fns[4]).one("click", fns[5]=function(){ajaxURL(".boxLeft", "&query=on", "&age=5", "<?=$id;?>");}); footer(".vozrast_On"); }); <?php /* отрицательный отзыв */?> j("#off").bind("click", function(){ j(".panel").attr('id','panelOFF').slideDown("slow"); <?php /* присваиваем уникальный id каждому элементу vozrast */?> j(".panel div").attr('id',function(index){return 'off_'+index;}).addClass("vozrast_Off").removeClass("vozrast_On"); <?php /* выводим кнопки, ловим клик и обрабатываем AJAX */?> j("#off_0").unbind('click',fns[0]).one("click", fns[0]=function(){ajaxURL(".boxRight", "&query=off", "&age=0", "<?=$id;?>");}); j("#off_1").unbind('click',fns[1]).one("click", fns[1]=function(){ajaxURL(".boxRight", "&query=off", "&age=1", "<?=$id;?>");}); j("#off_2").unbind('click',fns[2]).one("click", fns[2]=function(){ajaxURL(".boxRight", "&query=off", "&age=2", "<?=$id;?>");}); j("#off_3").unbind('click',fns[3]).one("click", fns[3]=function(){ajaxURL(".boxRight", "&query=off", "&age=3", "<?=$id;?>");}); j("#off_4").unbind('click',fns[4]).one("click", fns[4]=function(){ajaxURL(".boxRight", "&query=off", "&age=4", "<?=$id;?>");}); j("#off_5").unbind('click',fns[5]).one("click", fns[5]=function(){ajaxURL(".boxRight", "&query=off", "&age=5", "<?=$id;?>");}); footer(".vozrast_Off"); }); }); </script> <div style='text-align:center;margin-top:5px;'> <div class='boxLeft'><?=$sumON; /*число из базы*/ ?></div> <div class='boxOn' id='on'></div><div class='boxOff' id='off'></div><div class='center'></div> <div class='boxRight'><?=$sumOFF; /*число из базы*/ ?></div> </div><div style='clear:both;'></div> <div class='panel'>Выберите Ваш возраст: <div>моложе 20</div> <div>21-30</div> <div>31-40</div> <div>41-50</div> <div>51-60</div> <div>61 старше</div> </div> PS кстати, менять ID-шники - не самая лучшая идея |
:thanks: спасибо и низкий поклон, Ваш пример работает..
но если честно, сам бы до такого не дошел. В мануалах иначе описано. а почему менять ID-шники - не самая лучшая идея? |
Цитата:
работать ваш код будет, даже с добавлением и изменением ID-Шников но при этом страдает чистота кода. ID - это уникальный идентификатор, как ФИО у человека поэтому его не стоит менять и к тому же ID предназначен для доступа к одиночным элементам, для которых удобней обратится именно так. в вашем случае мы имеем дело с набором соседей и к каждому из них можно обращаться как "сосед №", а не назначать ID как именно обращатся таким образом, опять-таки напсиано в справочнике |
Цитата:
вопрос еще такой, я добавил строчку кода сюда БЫЛО: function footer(OnOff){ 04 j(OnOff).click(function(){ 05 j(".panel").slideUp("slow"); 06 j(".boxOn").css({'display':'none'}); 07 j(".boxOff").css({'display':'none'}); 08 j(".center").css({'display':'block'}); 09 return false; 10 }); 11 } СТАЛО: function footer(OnOff){ j(OnOff).click(function(){ j(".panel").slideUp("slow"); j(".boxOn").css({'display':'none'}); j(".boxOff").css({'display':'none'}); j(".center").css({'display':'block'}); j(".voteAge").slideDown("slow"); ajaxURL("#voteAge","","&age=agevote","<?=$id;?>"); }); } все работает как мне надо! возникает проблема с отображением результатов после запроса AJAX'a. то есть браузер отображает значение ~3-4 раза нормально, 1-2 раза значение не обновляется, хотя запрос проходит.. проверял, браузер в данном случае не кэширует.. как такое может быть? |
|
Цитата:
|
Saymor,
на странице куда запрос идёт установите заголовки запрещающие кешировать, если нету таких. |
он предназначен не только для выявления явных ошибок синтаксиса, а еще и для отладки ошибок логики
в нем есть возможность пошагово выполнять JS, смотреть перменные и прочее. |
Цитата:
у меня версия 1.5.4 скрин: http://imglink.ru/show-image.php?id=...704e97c10cb23f и еще поэксперементировав получил следующее: если после AJAX запроса я выдачу результатов отдаю в какой нибудь <div> на странице. То есть не в тот где отображается инфа и где она должна обновиться после запроса, а в "левый", то FF из 10 запросов 10 обновляет как надо! а вот например опера показывает из 2-4 запросов 1 не обновленный! загадка прям какая-то.. |
Часовой пояс GMT +3, время: 17:19. |