我在同一个文档中有两个相同的事件,但只有一个有效,另一个无效。这段代码显示了相同的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>
答案 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();
});
答案 1 :(得分:0)
问题是代码的输入带有id(confyes)。如果该代码的实例多一个,则该id的实例不止一个,这是不允许的。每个实例都需要一个唯一的ID。
当使用ID选择器(如$('#confyes'))时,jQuery选择器将始终仅作用于id的第一个实例。也许第一个是confyes_98,第二个是confyes_99。或者也许您可以使用类而不是ID。