Javascript IE问题:可见?
谁能告诉我如何在IE中实现这一点?它在其他浏览器中都能完美工作 我假设问题出在Javascript IE问题:可见?,javascript,jquery,css,cross-browser,Javascript,Jquery,Css,Cross Browser,谁能告诉我如何在IE中实现这一点?它在其他浏览器中都能完美工作 我假设问题出在:visible 短暂性脑缺血发作 所有问题均采用以下格式: <div class="question"> <p>Question 1</p> <h1>is this a question?</h1> <label class="btn"><input type="radio" name="question1" value="yes">
:visible
短暂性脑缺血发作
所有问题均采用以下格式:
<div class="question">
<p>Question 1</p>
<h1>is this a question?</h1>
<label class="btn"><input type="radio" name="question1" value="yes"><span class="yes">YES</span></label>
<label class="btn"><input type="radio" name="question1" value="no"><span class="no">NO</span></label>
<label class="btn"><input type="radio" name="question1" value="maybe"><span class="maybe">MAYBE</span></label>
</div>
问题1
这是一个问题吗?
对
不
大概
问题1看起来像这样:
<div class="hiddenquestion">
<p>Question 2</p>
<h1>is this a question?</h1>
<label class="btn"><input type="radio" name="question2" value="yes"><span class="yes">YES</span></lable>
<label class="btn"><input type="radio" name="question2" value="no"><span class="no">NO</span></lable>
<label class="btn"><input type="radio" name="question2" value="maybe"><span class="maybe">MAYBE</span></lable>
</div>
问题2
这是一个问题吗?
对
不
大概
其中.hiddenquestion当然是显示:无 我想你的问题是
<label class="btn"><input type="radio" name="question2" value="yes"><span class="yes">YES</span></lable>
更新
为了在所有浏览器中单击单选按钮或标签文本,您必须将javascript更改为
//change the selector of .yes to
$('label.yes').click(function () {...
并将问题“是”部分的标记改为
<label class="btn yes">
<input type="radio" name="question1" value="yes" />
<span>YES</span>
</label>
对
好的,这里有几个问题
首先,您的标签标签没有正确关闭,因为有人已经评论说
应该是
其次,从您的示例中,您的隐藏问题的class属性设置如下
,但我怀疑其中应该有一个空格,这意味着这就是您想要的
。您应该有一个css.hidden{display:none;}
和not.hiddenquestion
第三,你需要在单选按钮和标签中添加一个点击处理程序(或者这是IE中唯一的工作方式),在这种情况下,你的js应该是这样的
var fn = function () {
$('.question:visible')
.fadeOut()
.closest('.question')
.nextAll('.question')
.eq(0)
.delay(400)
.fadeIn();
};
// click handler on the yes label
$('.yes').click(fn);
// click handler on the actual yes radio
$(':radio[value="yes"]').change(fn);
你的HTML是什么样子的?IE 9,还没有测试我知道最近的是什么,我有10个问题,回答这个问题会淡出:可见的一个,然后淡出下一个。它在除IE之外的所有其他浏览器中都能正常工作,谢谢您的输入。它的作用是:
$('.yes')。单击(函数(){alert($('.question:visible').length);})
告诉你?@undefined别忘了closest
测试元素本身以及父元素。你一定想要的不是在单击时隐藏当前可见的问题。yes
按钮,并显示下一个隐藏的问题我刚刚尝试过这个,点击答案后我仍然一无所获?顺便说一句,你确定你点击的是“是”文本,而不是单选按钮。如果您想在单击文本“Yes”的单选按钮时将其淡出,则必须在标签上添加“Yes”类。勾选“随时更新”以澄清我从原始标记更改的所有内容已添加显示:块到问题1并已添加。问题{display:none}到我的CSP请更仔细地查看我的原始标记,该类位于单选按钮上,正如我所说,它在其他浏览器上都非常有效。非常好,谢谢,它现在在IE 8&9@Danny好的,但是没有第二点,我不确定您的代码是否可以工作,因为在您的示例中,隐藏的问题具有“hiddenquestion”(无空格)类-因此我不确定代码.nextAll('.question')
如何工作。。。不管怎样,如果你让它工作,那么这不是一个问题…Bizzare,它工作正常,所以我猜fadeIn取消了显示:没有?虽然我在Q1上使用了display:block,但问题显示:现在没有,这也很好用。不管怎样,现在一切都好了,谢谢你的帮助。
//change the selector of .yes to
$('label.yes').click(function () {...
<label class="btn yes">
<input type="radio" name="question1" value="yes" />
<span>YES</span>
</label>
var fn = function () {
$('.question:visible')
.fadeOut()
.closest('.question')
.nextAll('.question')
.eq(0)
.delay(400)
.fadeIn();
};
// click handler on the yes label
$('.yes').click(fn);
// click handler on the actual yes radio
$(':radio[value="yes"]').change(fn);