2012-12-19 36 views
1

我是jQuery的新手。我試圖使動態加載(AJAX調用)內容的錶行可選,但它不工作。它工作在一個標準的HTML頁面;以下工作:jquery selectable不能在動態加載的表上工作

<style> 
    #feedback { font-size: 1.4em; } 
    #selectable .ui-selecting { background: #FECA40; } 
    #selectable .ui-selected { background: #F39814; color: white; } 
    #selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; } 
    #selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; } 
</style> 
<script> 
    $(function() { 
     $("#selectable").selectable({ 
      filter: 'tr', 
      selected: function(event, ui) { 
       alert("row selected"); 
      } 
     }); 
    }); 
</script> 

<table id="selectable" border="1px"> 
    <tr><td>val1</td><td>Val2</td></tr> 
    <tr><td>Val3</td><td>Val4</td></tr> 
    <tr><td>Val5</td><td>Val5</td></tr> 
</table> 

但如果我使用$("my-div").html(same-data-from-ajax).trigger('create')div加載這個數據,那麼它不工作。

這是我有:

一個按鈕
  • 主HTML
  • 與JS:

    $("#button").click(function { 
        $.ajax({ 
         url: "./php/testselect.php", // this returns above html code 
          cache: false, 
          success: onSuccessSelect, 
          error: onError 
         }); 
    }); 
    function onSuccessSelect(data, status) { 
        $("#my-div").html(data).trigger('create'); 
    } 
    

難道我做錯了什麼?

回答

0

我相信你的情況下,最簡單的解決辦法是重新申請selectable到新創建的元素:

function onSuccessSelect(data, status) { 
    $("#my-div").html(data).trigger('create'); 
    $("#my-div").find("#selectable").selectable({ 
     filter: 'tr', 
     selected: function(event, ui) { 
      alert("row selected"); 
     } 
    }); 
} 

我也建議,如果你有一個以上的表,你可能想使可選擇使用類而不是id(例如:<table class="selectable">find(".selectable"))。

+0

感謝您的快速回復..但它似乎沒有工作.. – user1917138

+0

@ user1917138我已經在[jsFiddle](http://jsfiddle.net/KpDXc/)設置了一個工作示例,檢查它並看看你是否可以讓你的網頁工作。否則,告訴我什麼是錯的,我會看看我能否提供幫助。順便說一句,我認爲你的'$(「#button」)有一個輸入錯誤。click(function {'('function'後面缺少'()') – mgibsonbr

+0

我想我知道現在的問題是什麼..不起作用當我使用JQM時,它在JQ中工作,但不在JQM中工作 – user1917138

0

我有同樣的問題,沒有解決方案爲我工作。看來,可選的可以應用onpageload JavaScript執行。 mgibsonbr提供的小提琴沒有爲我工作。我所做的只是一個黑客,而且它是一個骯髒的問題。

添加元素後,我只需從緩存中重新加載頁面,而無需觸摸服務器。

location.reload();

相關問題