2016-07-01 137 views
1

代碼使用jQuery獲取從標籤文本

var $eContainer = $('<div/>', { id: "eContainer", class: 'eList' }).appendTo($injectTo); 
    for (var i in navProps) { 
     var np = navProps[i]; 
     var npName = np.name; 
     var npId = containerId + "_" + npName; 

     var $eLabel = $('<label />', { 'for': npId, text: npName }).appendTo($eContainer); 
     $('<input />', { type: 'checkbox', id: npId, value: npName }).prependTo($eLabel); 
    }; 

輸出

<label for="e_22"> 
    <input type="checkbox" id="selectcolumn_16" value="22">Supplier<div id="eContainer" class="eList"> 
      <label for="a"> 
       <input type="checkbox" id="a" value="A">AAA</label> 
       <label for="b"> 
        <input type="checkbox" id="b" value="B">BBB</label> 
            </div> 
           </label> 

問題

  • 它不關閉輸入標籤
  • 當我試圖讓標籤的文本它返回所有子標籤的文本以及

守則第二個問題

// Event handler for adding labels. 
this.$eList.on('click', ':input', $.proxy(function (event) { 
    var $e = $(event.target); 
    var selectedLabel = $e.parent().text(); 
    // here it should return "Supplier" when I click on it, but it returns 
    // SupplierAAABBB -- which is WRONG 

編輯

請不要」用硬代碼提供解決方案,因爲我需要使其動態工作,所以它一定需要從父代獲取它,會有幾個層次的這些di v程序和控制

+0

在我看來,你的代碼是好的,但HTML可能不是你想要的。所有這些文字確實在該標籤中。也許你想將'div'移到標籤外面呢? – smarx

+0

至於'input'標籤,它們不應該被「關閉」。在XHTML中,它們會自動關閉(''),但是在HTML中,它們是無效標記,看起來就像上面那樣('')。 – smarx

+0

如果你希望'div'在'label'之後,而不是在裏面,可以試試'.insertAfter(...)'而不是'.appendTo(...)'。 – smarx

回答

0

var text = $("label[for=e_22]").contents().filter(function() { 
 
    return this.nodeType == 3; 
 
}).text(); 
 

 
console.log(text.trim())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label for="e_22"> 
 
    <input type="checkbox" id="selectcolumn_16" value="22">Supplier 
 
    <div id="eContainer" class="eList"> 
 
    <label for="a"> 
 
     <input type="checkbox" id="a" value="A">AAA</label> 
 
    <label for="b"> 
 
     <input type="checkbox" id="b" value="B">BBB</label> 
 
    </div> 
 
</label>
1.使用節點類型,其中3等於文本節點

+0

請檢查編輯,我不能硬編碼的ID,因爲它是一個動態的解決方案 – Mathematics

+0

@Mathematics你如何選擇哪個標籤來獲取文本? – guradio

2

你可以使用此代碼標籤文本。

var lbltxt = $('#labelid').text(); 
+0

我沒有標籤id :(,它是動態的,標籤id可以是樹結構中的任何東西 – Mathematics

+0

樹結構中有多少標籤? – Developer

+0

它是動態的,所以X標籤,X div – Mathematics

-1
var myLabelValue = $('label').html(); 
0

你可以這樣做:

theLabel = $("#labelId"); 
theLabel.text(); //gets text 

的唯一原因,我的回答是不是開發商的回答不同的是,我的回答會儲存您的一個變種標籤 - 你不必每次使用$()繼續獲取它。