JQuery ve PHP mola fonksiyonu ile sorun

5 Cevap php

I'm posting simple version of php and Jquery code of the page that I need to create. As you can see, this example contains PHP break functions, and the name of this page is test.php.

Sorun bu sayfanın ilk bölümünü açmaya çalıştığınızda, (vaka 1) Jquery yük fonksiyonu başarıyla başlatıldı ve başarıyla aynı DIV uyarı mesajı için ikinci jQuery kodu içinde davayı 2. yükleyin. Ama Firefox ve Chrome uyarı mesajı onu göstermek olmaz eğer. Neden?

Thx.

Compleate sayfa kodu:

<?php
include_once '../include/config.inc.php';
include_once '../include/options.inc.php';
include_once '../include/security.inc.php';
include_once '../include/functions.inc.php';
include_once '../templates/config.php';
?>
<script type="text/javascript" src="jquery/jquery-1.3.2.min.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){
$("#one").live("click", function(){
$("#xuy").load("test.php?x=2");
});
});
</script>
<script type="text/javascript"> 
$(document).ready(function() {
$('#test').click(function() {
     alert("test for alert message");
   });
 });
</script>

<style>
#xuy{ width:770px; height:230px; border:1px solid #999; background-color:#33FF00;}
#one{ border:1px solid #F00; width:555px; background-color:#FFFF00;}
#two{ border:1px solid #000; width:355px; background-color:#CCCCCC;}
#three{ border:1px solid #ccc; width:255px; background-color: #00FFFF;}
</style>
<?
if (!isset($x)) $x = '';
switch ($x)
{
default:
case 1:
?>
<div id="xuy"><div id="one">DIV one</div></div>
<?
break;
case 2:
?>


<div id="two">DIV two</div><br>
<div id="test">click for Jquery alert</div>


<?
}
?>

5 Cevap

Ben sorun break ile olmadığını düşünüyorum, ama şu:

Ilk sayfasını açtığınızda, $ (document). Hazır işleyicisi tetiklenir. Bu işleyicisi tıklayabilirsiniz. Olay $ ('# test') bağlamak için çalışıyorum, ama # test henüz mevcut değil!

Sonra arayarak ikinci sayfayı yerleştirin:

$("#xuy").load("test.php?x=2");

Bu bir AJAX arama başlatır ve "xuy" denilen DIV sonucu ekler. Sen HTML içine tekrar hazır. $ (Document) eklemek, ancak belge zaten "hazır" olduğunu, çünkü işleyicisi, denir. Yani $ ('# test') için olay işleyicisi. Ist bağlı değil tıklayın!

Sen gibi yüklenen dosya, bir etiketi içinde bunu yapmak zorunda olurdu:

<div id="two">DIV two</div><br>
<div id="test">click for Jquery alert</div>
<script>
   $('#test').click(function() {
     alert("test for alert message");
     });
   });
</script>

default: bir switch deyimi hep son gelmelidir. Lütfen switch ifadesinin sonuna taşıyın.

default:, bir catch-all durumda ve bu kadar önemli bir şey eşleşirse ayrıştırıcı her zaman davayı yürütecek.

switch belgeler

Bu oluşturulan kaynağını görmeden neler söylemek zor, ama ben birkaç sorun görüyorum:

  • Sizin ikinci anahtarı case break ifadesini eksik.
  • Sen $('#test'), ilk sayfa yük olan var olmayan bir tıklama olayı bağlayıcıdır. Bunun yerine, live() kullanmayı düşünün.
  • Bu "xuy" div içine yüklüyoruz içeriği gibi kendi JavaScript kodu ile komple bütün bu sayfayı olduğu görünüyor. Yani kafa karıştırıcı şeyler olabilir, hangi sayfanın içine yinelenen kod reintroducing demektir.

This is the complete code that is working fine and without errors.
Thanks again everyone!

<?php

include_once '../include/config.inc.php'; include_once '../include/options.inc.php'; include_once '../include/security.inc.php'; include_once '../include/functions.inc.php'; include_once '../templates/config.php'; ?>

$(document).ready(function(){ $("#one").live("click", function(){ $("#xuy").load("t.php?x=2"); }); });

DIV one

DIV iki

click for Jquery alert $('#test').live('click', function() { alert("test for alert message"); });