代码
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和控件的几个层次结构
答案 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>
答案 2 :(得分:0)
你可以这样做:
theLabel = $("#labelId");
theLabel.text(); //gets text
我的答案与开发人员的答案不同的唯一原因是我的答案将您的标签存储在var中 - 您不必每次都使用$()继续获取它。
答案 3 :(得分:-1)
var myLabelValue = $('label').html();