2010-09-21 44 views
1

我想寫一個函數,當你點擊div時會發布數據(並在div內添加結果)。我已經知道它會提醒數據,但出於某種原因,我無法將它追回到點擊的div內?jQuery發佈和附加點擊div內的數據?

可點擊的div:

<div class="qaContainer"> 
    <h2>testing title</h2> 
    <input type="hidden" name="catid" id="catid[]" class="catid" value="3"> 
</div> 

而jQuery的:

jQuery(".qaContainer").click(function() { 
    var cat_id = jQuery(this).find(".catid").val(); 
    if (cat_id) { 
    jQuery.post("/index.php?option=com_qa&view=questions&catid=2&Itemid=33", { catid: cat_id }, function(data) { 
    jQuery(this).append(data); 
    }); 
}; 

其中它返回的數據:

<div class="info"> 
    <div class="question">testing 1</div> 
    <div class="answer">testing 2</div> 
</div> 

現在我想返回的數據坐下來內部qaContainer div,隱藏輸入後,這就是爲什麼我試圖使用append,但它不工作。我得到這個錯誤FF:

Error: b.createDocumentFragment is not a function 
Source File: jquery-1.4.2.min.js 
Line: 20 

如果有人能夠幫助這將是巨大的:)

回答

2

你可以保持一個參考<div>你點擊,這樣的:

jQuery(".qaContainer").click(function() { 
    var div = jQuery(this), 
     cat_id = div.find(".catid").val(); 
    if (cat_id) { 
    jQuery.post("/index.php?option=com_qa&view=questions&catid=2&Itemid=33", { catid: cat_id }, function(data) { 
     div.append(data); 
    }); 
    } 
}); 

作爲一個方面說明,你的意思是在POST數據中的查詢字符串(作爲常量)中通過catid

1

我在that中存儲了對this的引用以查看它是否有所不同。雖然,我不認爲post()重新定義this。無論如何,給這個鏡頭:

jQuery(".qaContainer").click(function() { 
    var cat_id = jQuery(this).find(".catid").val(); 
    var that = this; 
    if (cat_id) { 
    jQuery.post("/index.php?option=com_qa&view=questions&catid=2&Itemid=33", { catid: cat_id }, function(data) { 
    jQuery(that).append(data); 
    }); 
};