使用jQuery从label获取文本

时间:2016-07-01 07:03:03

标签: jquery html

代码

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

修改

请不要提供带有硬编码的解决方案,因为我需要让它动态运行,因此必须从父级获取它,这些div和控件的几个层次结构

4 个答案:

答案 0 :(得分:3)

您可以使用此代码从标签获取文字。

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

答案 1 :(得分:1)

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.使用nodeType,其中3等于文本节点

答案 2 :(得分:0)

你可以这样做:

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

我的答案与开发人员的答案不同的唯一原因是我的答案将您的标签存储在var中 - 您不必每次都使用$()继续获取它。

答案 3 :(得分:-1)

var myLabelValue = $('label').html();