2016-12-16 58 views
0

我創建了一個表中<td>顯示我的SPARQL查詢結果,結果確實顯示,但是我希望它的<td>(結果)點擊它時,顯示一個消息框。眼下額外<td>顯示在頂部,它僅適用於特定的一個。似乎沒有任何實際結果<td>點擊時發生:如何使​​點擊

我的代碼:

<table id="results"> 
    <td class="td" onclick="myFunction()"></td> 
    </table> 
    <body> 
     <script type="text/javascript"> 
     PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>   
PREFIX type: <http://dbpedia.org/class/yago/> 
PREFIX prop: <http://dbpedia.org/property/> 
SELECT ?country_name 
WHERE { 
    ?country rdf:type type:Country108544813. 
    ?country rdfs:label ?country_name. 

} 
       "Limit 1" 
       ].join(" "); 

       alert("this query: [" + query + "]"); 

       var queryUrl = url + "?query=" + encodeURIComponent(query) + "&format=json"; 




</body> 

的JavaScript代碼我是從網上材料,所以還是讓我的頭周圍,主要使用的是顯示查詢結果。所以,是的答案是真的讚賞和感謝閱讀:)

+0

你可以添加一個單擊事件到你想要活動的td – happymacarts

+0

你可以發佈從你的ajax返回的呈現的html嗎 – happymacarts

回答

1

所以第一關,你的HTML是有點過...你的表是標籤外,當它應該是它裏面(注:一個TD通常會在一太)

<body> 
    <table id="results"> 
     <tr><td class="td" onclick="myFunction()"></td></tr> 
    </table> 
    <script type="text/javascript"> 
    .... 

但你的問題更精確:您已經創建了一個細胞,並連接一個onclick事件處理程序,並只有它。你抓着的JavaScript代碼實際上追加新行和單元格表,和那些沒有分配onclick處理。

所以我想嘗試這樣的事情,而不是:

<script type="text/javascript"> 
     var table = $("#results"); 
     table.on("click", "td", myFunction); // <-- magic! 
     var url = "http://dbpedia.org/sparql"; 

「魔術師」行是甜的一部分:它附着在整個表的處理,而是由「TD篩選事件「選擇器。理想的,當你添加動態DOM元素...

然後你不需要設置您的初始TD,那麼一個是空的在你的餐桌,並點擊......相反,只需將一個空的頂部表格在頁面上:

<body> 
    <table id="results"></table> 
    <script type="text/javascript"> 
    .... 

希望這有助於!

+0

感謝您的回答,它的工作完美:) –

0

雖然看在你的代碼中縫只對靜態

<table id="results"> 
<td class="td" onclick="myFunction()"></td> 
</table> 

click事件當您添加動力的無級或的onclick事件。您可以通過動態地添加的onclick到TD或運行腳本,設置在該表中的所有TDS具有相同的單擊事件解決這個問題。

function getTableCell(fieldName, rowData) { 
      //var td = $("<td></td>"); 
       var td = $("<td class="td" onclick="myFunction()"></td>"); 
      var fieldData = rowData[fieldName]; 
      //alert("fieldName = ["+fieldName +"] rowData[fieldName][value] = ["+rowData[fieldName]["value"] + "]"); 
      td.html(fieldData["value"]); 
      return td; 
     } 

$("#results td").click(function(){ 
    var x; 
    if (confirm("Press a button!") == true) { 
     x = "You pressed OK!"; 
    } else { 
     x = "You pressed Cancel!"; 
    } 
} 
+0

爲什麼你不能只從一個靜態元素委派click事件處理器,比如'## results'?然後,即使添加動態元素,也不必每次都重新添加綁定。我想'$( 「#結果」)上( 「點擊」, 「TD」,函數(){做一些代碼});'會做到這一點,是嗎? –

+0

你可以但那不是問的問題。他希望能夠點擊表格中的任何td元素。如果他想點擊任意TD元件上的所有你可以使用: – Wesley

+0

疑難雜症,是的 - 我更新了我的意見,感謝趕上! –