JQUERY绑定到LABEL,并传递名称&值

时间:2009-12-28 23:35:25

标签: jquery binding input click

<p id="noteTypebox">
<label for="noteType_2" class="notetypelabel" id="noteType_2" >
<input type="radio" name="noteTypeID" value="2" class="notetype">IDI</input>
</label>
</p>

鉴于上面的代码,我希望JQUERY代码绑定到LABEL,因为INPUT框是隐藏的(我不希望apge上的单选按钮)。

当用户点击标签时,它应该触发JQUERY函数并提供与标签关联的INPUT的值。例如,如果用户点击标签=“noteType_1”,则可以提醒noteType_1&amp; 1

这是我目前的代码,我可以使用你的帮助!感谢

$( document ).ready( function() { 
    $('#noteTypebox:label').click(radioClicks)
});

function radioClicks() {
    alert(input name + input value);
    return false;
};

由于

3 个答案:

答案 0 :(得分:1)

我会做这样的事情:

$(document).ready(function() { 
    $('#noteTypebox label').click(radioClicks);
});

function radioClicks() {
    var input = $(this).children("input");
    alert(input.attr("name") + " " + input.val());
    return false;
};

然而,这依赖于您始终将HTML结构相同。

更强大的方法是执行以下操作:

function radioClicks() {
    var label = $(this);
    var input = $("input#" + label.attr("for"));
    alert(input.attr("name") + " " + input.val());
    return false;
};

在这种情况下,标签可以是与输入相关的任何位置,它仍然有效。

更新:已更新第二个代码段,仅获取已选中的单选按钮。

对评论的回复:

上面的代码会查找input,其ID与for的{​​{1}}属性相同。看到你更改了label的id,这会破坏代码并使第二个例子不够充分。但是,只要input仍然是input的子项,第一个示例就可以正常工作。另外,我需要提一下,label上的for属性因您的更改而变得多余,因为它现在所说的都是label适用于自身。

答案 1 :(得分:1)

您需要找到与input相关联的label元素,如下所示:

var input = $('#' + $(this).attr('for'));

然后,您可以通过撰写input.attr('name')来获取名称,并通过撰写input.val()来获取该值。

答案 2 :(得分:0)

只需更改为:

$(".notetypelabel").click( ....