多个JQuery事件;想用$(这个)

时间:2013-04-12 17:16:26

标签: jquery this multiple-instances

我在同一个文档中有两个相同的事件,但只有一个有效,另一个无效。这段代码显示了相同的ID,这是一个愚蠢的疏忽,我使用了不同的ID,但无济于事。

如何使用$(this)来影响这两个事件?

这是我的代码。

<fieldset class="clear">
    <div class="auth_98">
        <legend>Is this a conference?</legend>
        <input class="authradio" type="radio" name="conf" id="confyes" value="yes">
        <label>Yes</label>
        <input class="authradio" type="radio" name="conf" value="no" checked="checked">
        <label>No</label>
        <!-- begin Conference Toggle -->
        <script>
            $(document).ready(function() {
                $('.hideme').hide()
                $('.authradio').change(function() {
                    var $stat = $('#confyes')[0].checked;
                    if ($stat == true) $('.hideme').slideDown();
                    else $('.hideme').slideUp();
                });
            });
        </script>
        <!-- end Conference Toggle -->
        <!-- hidden conference section -->
        <div class="hideme">
            <div class="auth_50">
                <legend>Conference Role</legend>
                <input class="authradio" type="radio" name="conference" value="Atendee" checked="checked">
                <label>Attendee</label>
                <input class="authradio" type="radio" name="conference" value="Presenter">
                <label>Presenter</label>
                <input class="authradio" type="radio" name="conference" value="invitedspeaker">
                <label>Invited Speaker</label>
            </div>
            <div class="auth_50">
                <label>
                    <legend>Conference Website</legend>
                </label>
                <input class="authurl" type="url" placeholder="www.amazingsciencestuff.com">
            </div>
        </div>
    </div>
</fieldset>

2 个答案:

答案 0 :(得分:1)

您不应该有2个具有相同ID的元素,因此如果您尝试将该代码应用于同一html的2个实例,$('#confyes')选择器将只找到该ID的第一个实例。

您可以在.authradio上使用类选择器,然后导航dom以查找要显示的关联.hideme div。我假设你想要这样的东西

$('.authradio').change(function() {
    if ($(this).val() == 'yes') 
        $(this).parent().find('.hideme').slideDown();
    else 
        $(this).parent().find('.hideme').slideUp();
});

FIDDLE

答案 1 :(得分:0)

问题是代码的输入带有id(confyes)。如果该代码的实例多一个,则该id的实例不止一个,这是不允许的。每个实例都需要一个唯一的ID。

当使用ID选择器(如$('#confyes'))时,jQuery选择器将始终仅作用于id的第一个实例。也许第一个是confyes_98,第二个是confyes_99。或者也许您可以使用类而不是ID。