1

我在同一个文档中有两个相同的事件,但只有一个有效,另一个无效。此代码显示相同的 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>
4

2 回答 2

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();
});

小提琴

于 2013-04-12T17:38:08.930 回答
0

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

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

于 2013-04-12T17:30:28.790 回答