2013-06-24 1 views
3

드롭 다운 선택기가있는 PHP 페이지가 있습니다. 셀렉터가 변경되어서 .mytable이라는 div에 드롭하면 jquery, ajax 및 mysql을 사용하여 테이블을 생성합니다. 테이블에있는 데이터 중 일부는 테이블의 데이터에 영향을 미치는 PHP 스크립트에 대한 링크이므로 재로드없이 테이블을 새로 고침하고 싶습니다.테이블 내부의 링크에 대한 선택자는 무엇입니까

나는 이벤트 리스너를 테이블의 링크에 첨부하여이 작업을 수행해야한다는 것을 알고 있지만 수신기를 연결할 오른쪽 선택기를 가져 오는 것 같습니까?

어떤 도움이 user.php라고

사용자가 보는 페이지를 이해할 수있을 것입니다 :

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
<link href="css/table_style.css" rel="stylesheet" type="text/css"> 
</head> 



<body> 
<form name="form1" method="post" action=""> 
    <label for="select_data"></label> 
    <select name="select_data" id="select_data"> 
    <option value=1>"Apples"</option> 
    <option value=2>"Pears"</option> 
    <option value=3>"Bananas"</option> 
    </select> 
</form> 

<div id="mytable">This is where the table goes</div> 


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
<script src="get_table.js"></script> 
</body> 
</html> 

JQuery와 이벤트 핸들러는 다음과 같습니다

$(document).ready(function(){ 
    //listen for select list to change, pass fruit into create_table.php, pass data into mytable div 
    $('#select_data').change(function() { 
     $.post('create_table.php',{fruit: fruit}, function(data) { 
      $('div#mytable').html(data);});  

    }); 

    $('.fruit_link').change(function() { 
     $.post('create_table.php',{fruit: fruit}, function(data) { 
      $('div#mytable').html(data);});  

    }); 

}); 

스크립트 이벤트가 그 테이블을 만들고 HTML 코드를 반환하는 핸들러 호출은 다음과 같습니다.

<?php 

require_once('Connections/dbc.php'); 
$fruit=$_POST['fruit']; 
$sql="SELECT * FROM q_fruit WHERE FruitID =".$fruit; 
$rec1=mysqli_query($dbc,$sql); 

    echo '<table class="table" align="center">'; 
    echo '<th class="th" width="80px">Fruit ID</th>'; 
    echo '<th class="th" width="150px">Fruit Name</th>'; 
    echo '<th class="th" width="40px">Fruit Action 1</th>'; 
    echo '<th class="th" width="150px">Fruit Action 2</th>'; 

    while ($row=mysqli_fetch_array($rec1)) 
     { 

      echo '<tr class="tr">'; 
      echo '<td class="td">'.$row['FruitID']. '</td>';  
      echo '<td class="td">'.$row['FruitName']. '</td>'; 
      echo '<td class="td"><a class="fruit_link" href="fruitaction1.php">'.$row['FruitID']. '</a></td>'; 
      echo '<td class="td"><a class="fruit_link" href="fruitaction2.php">'.$row['FruitID']. '</a></td>'; 
      echo '</tr>'; 
     } 

    echo '</table>'; 


    mysqli_free_result($rec1); 
    mysqli_close($dbc); 

?> 

그래서 select 이벤트 핸들러는 값이 변경 될 때마다 표를 재현하기 위해 작동하지만 링크 핸들러는 그렇지 않습니다. 링크가 HTML에 반환되었으므로 링크에 있기 때문에 추정하고 있습니다. 자바가 듣고있는 사용자 파일. 이 둘 사이에 방법이 있을까요?

+1

'$ ('. mytable table tr td a'). 클릭 (function() {})'시도해야합니다. 여기에 시도 된 코드를 – asprin

+0

에 게시하십시오. –

+0

이것은 AJAX를 사용하여 쉽게 확인할 수 없으며 다음을 확인하십시오. http://stackoverflow.com/questions/5681380/refresh-a-table-with-jquery-ajax-ever-5-seconds – user2504141

답변

2

간단하지 않은 경우 $("table a")처럼 간단하지만 ... 모든 테이블에서 모든 a (nchor)를 선택합니다.라는 경우 다음 $("div.mytable table a")

만 해당 테이블에서 그들을 선택합니다

은 클래스를 의미하지만 그것이 ID 인 경우 다음 $("#.mytable table a") (그리고 정말 점으로 시작).

+0

답장을 보내 주셔서 감사합니다. – user2391089

+0

이것의 뒤에 원리는 그러나 나가있는 문제는 완전한 테이블 html가 PHP 원본에있는 div에 등을 맞댄 되풀이하고있다이다. 테이블의 링크가 청취자에게 포착되지 않습니다. 그러나 이미 스크립트에있는 링크가 캡처되고 있습니다. – user2391089

+0

목표는 콤보 상자의 값이 SQL 쿼리의 일부로 사용 된 경우 값을 사용하여 jquery를 사용하여 테이블을 만드는 것입니다. 생성 된 테이블은 데이터 셀에 링크를 가지고 있습니다.이 링크를 클릭하면 백그라운드 PHP 스크립트 나 함수를 수행하여 데이터베이스를 변경하고 페이지에서 벗어나지 않고 테이블을 새로 고쳐야합니다. – user2391089