2012-02-15 94 views
0

更新

我遇到2頁。一個索引頁面連接到一個js文件。這個js文件包含從數據庫中獲取數據的ajax代碼。 這是我的JS文件

$(document).ready(function() { 

    // getting links from db andshow sub_menu div // 
    $(".menu_item").mouseover(function(){ 
     $(this).addClass("selected").children().slideDown(500,function(){ 
      var id = $(".selected").attr("id"); 
      var ajax= false; 
      ajax = new XMLHttpRequest(); 
      var qst = "?id="+id; 
      ajax.open("GET","ajax/get_sub_cats.php"+qst); 
      ajax.onreadystatechange = function(){ 
       if(ajax.readyState == 4 && ajax.status == 200){ 
        $(".sub_menu[title="+id+"]").html(ajax.responseText); 
       } 
      } 
      ajax.send(null); 
     }); 
    }); 

    // hiding sub_menu div // 
    $(".menu_item").mouseout(function(){ 
     $(this).removeClass("selected").children(".sub_menu").slideUp(500); 
    }); 

    // keeping sub_menu div visible on mouse over // 
    $(".sub_menu").mouseover(function() { 
     $(this).stop(); 
    }); 

    // clicking sub menu link in the menu // 
    $(document).delegate("a#subCatLink","click",function(){ 
    alert("test"); 
    }); 
    // document ready end 
    }); 

,這是用來獲取使用AJAX從另一個PHP文件未來分貝

<?php 
require('../_req/base.php'); 
$id = $_REQUEST['id']; 
$getSubcatsQ = "select * from sub_cats where Main_Cat_ID = '$id'"; 
$getSubcatsR = mysql_query($getSubcatsQ); 
$numrows = mysql_num_rows($getSubcatsR); 
while($row = mysql_fetch_array($getSubcatsR)){ 
    ?> 
    <a id="subCatLink" href="products.php?id=<?php echo $row['Sub_Cat_ID']; ?>"><?php echo $row['Sub_Cat_Name']; ?></a><br /> 
    <?php 
} 
mysql_close($connect); 
?> 

點擊鏈接鏈接get_sub_cats PHP文件在所有

+2

我沒有看到阿賈克斯。圖片也不清楚;這聽起來像你包括JS做Ajax來做一個包含;爲什麼不直接使用PHP來實現HTML渲染部分的端到端?最後,它看起來像你試圖使用ID('#subCatLink')作爲一個類,儘管從這個縮寫代碼示例很難說。如果多於一個錨點具有'#subCatLink',那麼你做錯了,因爲每個頁面只能有一個ID實例。 – 2012-02-15 15:45:34

+0

我認爲你的問題描述中缺少一些東西:你的小提琴不包含上面的點擊事件管理器,因爲它應該。 @Greg Pettit說的+1。 – 2012-02-15 15:49:53

+0

我的意思是jsfiddle代碼顯示.stop()以保持sub_menu可見,所以你可以知道它是否是問題 – 2012-02-15 16:00:34

回答

1

對不起,也許這會有所幫助,也許不會。但是......

你爲什麼不使用這樣的事情:

jQuery的

$(".menu_item").mouseover(function(){ 
    var id = $(".selected").attr("id"); 
    var qst = "?id="+id; 
    var html = ''; 
    $.getJSON('ajax/get_sub_cats.php'+qst, function(data){ 
     var len = data.length; 
     for (var i = 0; i< len; i++) { 
      html += '<a id="subCatLink'+data[i].Sub_Cat_ID+'" href="products.php?id='+data[i].Sub_Cat_ID+'">'+data[i].Sub_Cat_Name+'</a>'; 
     } 
     $(".sub_menu[id="+id+"]").html(html); 
    }); 
}); 

PHP

require('../_req/base.php'); 
$return = array(); 

$id = $_REQUEST['id']; 
$sql = "select * from sub_cats where Main_Cat_ID = '$id'"; 
$result = mysql_query($sql); 

while($ln = mysql_fetch_array($result)){ 
    $return[] = $ln; 
} 

echo json_encode($return); 
+0

PS:我把一個ID放在你的'標籤ID'因爲你不應該(dom不高興)有2元素或更多具有相同的ID – 2012-02-15 16:22:31

-1
不工作

ok試試這個

$(document).delegate("click","a",function(){ 
    var target = $(this).attr("href"); 
    alert(target); 
}); 

這應該作爲一個測試,顯示hr如果您的網頁上有任何鏈接。如果可行,將所有想要顯示的鏈接放在div中。然後叫它

$('#divID').delegate("click","a",function(){ 
    var target = $(this).attr("href"); 
    alert(target); 
}) 
+3

你是什麼意思「已被暫停」?它只有1.7+,所以你可能是正確的,它不適用於亞西爾......但「暫停」使它聽起來像已經被丟棄。 – 2012-02-15 15:42:58

+0

哈哈你說得很對,我完全錯過了閱讀api.jQuery.com上的內容這是一個漫長的一天: -/ – smitchelluk 2012-02-15 15:46:29

+0

編輯刪除愚蠢 – smitchelluk 2012-02-15 15:54:40

相關問題