Jquery使用委托将click事件绑定到所有表单字段

时间:2014-01-17 07:21:51

标签: javascript jquery html

这是我的HTML

<div class="dc2-contact-cont" selectedindex="1" id="contact-form-applet">
<div class="dc2-ltfc">
    <div class="dc2-ltfcs">A
        <br>
    </div>
    <div role="row" class="dc2-ltfcc" id="0">
        <p><span class="dc2-ltf-span" id="SIO_Contact_First_Name_Label">First Name</span>
            <br>
            <input type="text" aria-labelledby="SIO_Contact_First_Name_Label" id="0_SIO_Contact_First_Name" name="s_5_2_30_0" class="dc2-ltf-input" value="555" aria-readonly="false">
        </p>
    </div>
</div>
<div class="dc2-ltfc">
    <div class="dc2-ltfcs">B
        <br>
    </div>
    <div role="row" class="dc2-ltfcc" id="1">
        <p><span class="dc2-ltf-span" id="SIO_Contact_First_Name_Label">First Name</span>
            <br>
            <input type="text" aria-labelledby="SIO_Contact_First_Name_Label" id="1_SIO_Contact_First_Name" name="s_5_2_30_0" class="dc2-ltf-input" value="4444">
        </p>
    </div>
</div>

我需要将click事件绑定到div中的所有输入控件,但我无法找到正确的选择器。

我尝试了以下表达式,但它无法正常工作

$('.dc2-ltfcc p').delegate("input[type=text], textarea",
    "click", {
        ctx: this
    },
    function(event){
        console.log("clicked");             
    });

这是jsFiddle的链接,我尝试使用find来获取正确的选择器,但我甚至无法选择div。

jsFiddle

3 个答案:

答案 0 :(得分:1)

你可以这样做:

$('.dc2-ltfcc p').on('click','input',function() {
     console.log("clicked");
});

注意:delegate()已弃用版本1.7,您应该使用on(),而不是像上面那样。

答案 1 :(得分:0)

使用 on()

.on()语法是1.7版本使用的新语法,它旨在替换.bind().delegate().live()

了解更多信息 - &gt; http://blog.jquery.com/2011/11/03/jquery-1-7-released/

$("#contact-form-applet").on('click','input',function() {

// your desire action     
});

答案 2 :(得分:0)

使用on

$("#contact-form-applet").on("click","input",function() {
alert('test');
});

<强> Working Demo

使用delegate

$( "#contact-form-applet" ).delegate( "input", "click", function() {
alert('test');
});

<强> Working Demo