2012-08-26 15 views
15

簡單的問題。我有一個js變量我想在jQuery選擇器中連接。但它不起作用。沒有錯誤出現。哪裏不對?如何正確地將變量連接到jQuery選擇器中的某些文本。在jQuery Selector中連接

<div id="part2"></div> 

<script type="text/javascript" > 

$('#button').click(function() 
{ 
var text = $('#text').val();  
var number = 2; 
$.post('ajaxskeleton.php', { 
red: text  
}, 
    function(){ 
    $('#part' + number).html(text); 
    }); 
}); 


</script> 
+3

您應該創建一個小提琴:http://jsfiddle.net/。 – valentinas

+0

@ ason328,你知道'console.log()'。在它的幫助下,通過將它放在有趣的線條中,您可以看到代碼中發生了什麼步驟 – user907860

+0

不,我不知道它。我現在來看看。 – jason328

回答

30

沒有什麼錯

$('#part' + number).html(text); 

的jQuery的語法接受String(通常一個CSS選擇器)或DOM Node作爲參數來創建一個jQuery Object

你的情況,你應該通過一個字符串$()

$(<a string>) 

確保您可以訪問變量numbertext

要測試做:

function(){ 
    alert(number + ":" + text);//or use console.log(number + ":" + text) 
    $('#part' + number).html(text); 
}); 

如果你看到你沒有訪問,它們作爲參數傳遞給函數,你必須包括$不用彷徨的uual參數,之後他們通過自定義參數。

+2

太棒了。感謝您的明確解釋。我的var編號被稱爲undefined,我很快修復了這個編號。 – jason328

+0

Gald,它的固定。但是現在我很困惑,你是怎麼修復它的? :) – sabithpocker

+1

Noob錯誤。我在點擊事件之外調用了var數字。 – jason328

2

您的連接語法是正確的。

最有可能的回調函數甚至沒有被調用。你可以通過在該函數中加入alert(),console.log()debugger行來測試。

如果沒有被調用,很有可能是AJAX錯誤。看看鏈接一個.fail()處理$.post()後找出錯誤是什麼,例如:

$.post('ajaxskeleton.php', { 
    red: text  
}, function(){ 
    $('#part' + number).html(text); 
}).fail(function(jqXHR, textStatus, errorThrown) { 
    console.log(arguments); 
}); 
+0

$ .get回調中的範圍是什麼?變量數量和文本是否可以在那裏訪問? – sabithpocker

+1

@sabithpocker如果上面的代碼是完整的,那麼'number'和'text'將被訪問,因爲它們是_lexical scope_的一部分。回調中的「gotcha」變量是'this',但你沒有使用它。 – Alnitak

+0

謝謝你將詞彙轉化爲詞彙範圍。 – sabithpocker