2013-12-09 34 views
0

我是JQuery的新手。我有以下的HTML渲染:檢查HTML元素的JQuery語法

<span class="activate"><label id="lblMTPrinterID1">MT1</label></span> 
<span class="activate"><label id="lblNTPrinterID1">NT1</label></span> 
<span class="activate"><label id="lblActive1">Y</label></span> 

我試圖檢查由3個唱片公司給出的值:

$(function(){ 
var tr = $(this).parents('tr:first'); 
var MTPrinterID = tr.find("#lblMTPrinterID1").val(); 
var NTPrinterID = tr.find("#lblNTPrinterID1").val(); 
var Active = tr.find("#lblActive1").val(); 

}); 

這些瓦爾都返回null即使是那些我能在渲染HTML很好地看到他們。由於不熟悉,我確定我使用錯誤的systax。可有一個人請幫助:)

+0

'label'沒有'.val()'。您只能檢索其'.text()'或'.html()'。 – melancia

+1

在dom就緒處理程序中'this'引用文檔對象,所以'$(this).parents('tr:first')'不會返回任何東西 –

+0

正如@MelanciaUK所說。 .val()通常返回值屬性值。 .text()返回打開標籤和結束標籤之間的文本。 .html()返回HTML,就像你在那裏看到的一樣。 – echochamber

回答

1

如何:

var label = $("#lblMTPrinterID1").text(); 

這使你的標籤標籤中的文本,因爲我認爲這是你以後在做什麼!

+0

非常感謝。 – user3041439

2

試試這個:

$(function(){ 
    var MTPrinterID = $("#lblMTPrinterID1").html(); 
    var NTPrinterID = $("#lblNTPrinterID1").html(); 
    var Active = $("#lblActive1").html(); 
}); 

ID應該是整個頁面的獨特因此沒有理由來過濾他們只是裏面的tr(想必你在其中有您HTML,但只是沒有顯示在你粘貼的代碼中)。如果它們不是整個頁面唯一的,則改爲使用類。

這也假定你在這些var之後在同一個函數中分配它們,因爲它們在函數內部定義時不能在函數外部使用。

+0

謝謝。像魅力一樣工作。 – user3041439

+0

不客氣!隨時接受答案,如果它幫助你。 :) – mayabelle

+0

我接受,即它是在我的代碼。還有什麼我需要做的? – user3041439

1

看看這段代碼:

$(function(){ 
    /* some code here */ 
}); 

是什麼呢?它分配一個函數,當DOM準備就緒時運行。這就是$(function(){})所做的。

在您的處理程序中,您正在使用this。關鍵字this實際上在這裏指向document。然後,您查找documentparents。顯然這不會有用。

我想你可能想要做這樣的事情:

$(function(){ 
    $('td').click(function() { 
     var tr = $(this).parents('tr:first'); 
     var MTPrinterID = tr.find("#lblMTPrinterID1").text(); 
     var NTPrinterID = tr.find("#lblNTPrinterID1").text(); 
     var Active = tr.find("#lblActive1").text(); 
    }); 
}); 

該分配click處理程序,所以在點擊td元素時,該功能將被運行。 this現在將指向td元素,因此它會找到父級tr並從那裏進行搜索。

還請注意,您需要致電text()而不是val(),因爲label元素沒有value

+0

非常感謝。 – user3041439