2012-02-03 112 views
0

我正在使用jQuery來查找表中的某些元素。問題是我可能不知道元素的類型。這意味着一個元素可以是一個簡單的TD或一個SELECT。但是,既然它們都有與之相關的文本,我想要檢索元素,如果它具有文本屬性。jQuery使用屬性查找元素

$($(rows[i]).find("element that has property text")[0]).text(); 

更新1:我更新了代碼,td文本節點有一個值,但currentRow.triggerType返回空。

currentRow.triggerType = $($(rows[i]).find('td')[0]).filter(function() { 
      return this.nodeType == 3; 
     }).text(); 
+1

這看起來很重和低效。爲什麼你不能只使用ID或類? 'TD'元素有一個text/innerHTML,而'SELECT'元素有選項。它應該尋找什麼? – Stefan 2012-02-03 22:46:14

+0

以前寫的很舊的代碼。沒有ID或類與元素相關聯。 – azamsharp 2012-02-03 22:47:05

+0

'text property'是什麼意思?你的意思是可以有文本節點子節點的DOM節點? – 2012-02-03 22:47:16

回答

1

您可以將自定義過濾器的功能 - 在下面的例子中,我們減少的結果設置爲包含一個文本節點(nodeType == 3

$('td').filter(function() { 
    return this.nodeType == 3; 
}).text() 

更新

你的選擇應項目是

$(rows[i]).find('td').first().filter(... 
+0

謝謝,但有沒有使用該功能的單線程方式。 – azamsharp 2012-02-03 22:50:53

+0

不可以。如果你想在一條線上,拿出換行符!爲什麼? – 2012-02-03 22:51:56

+0

請在原始問題中查看我的更新代碼。 – azamsharp 2012-02-03 23:12:36

0

我真的不明白這個問題,但會這樣嗎?

$(rows[i]).filter(function(){ 
    return $(this).text() !== ''; 
}).text(); 

你也可以試試這個:

$(rows[i]).not(':empty').text(); 
+0

基本上我有一個HTML表格。表格有行和單元格。一些單元格具有文本節點,一些單元格具有下拉列表。我想從td和下拉列表中使用jQuery的text()函數選擇文本值。 – azamsharp 2012-02-03 23:16:25

+0

@azamsharp:我的答案是否有效? – 2012-02-03 23:28:01

+0

我「愛」那些類型的問題,你回答,但你不知道問題是什麼...... ** =)** – gdoron 2012-02-05 11:28:17

0

It's並不清楚you'd喜歡做的價值觀,但這裏有一些方法可以讓他們;

$('td:first, select').each(function() { 
    var text = $(this).val() || $(this).text(); 
    console.log(text); 
}); 

如果某些td元件包含select元件;

$('td').each(function() { 
    var $this = $(this), 
     $select = $this.find('select:first'), 
     text 

    text = ($select.length == 0) ? $this.text() : $select.val(); 
    console.log(text); 
});