我的问题很简短,但我自己无法弄明白。我有一个像 - >这样的功能http://jsfiddle.net/gtU56/。我在我的html代码中调用了一个带有事件监听器(onclick)的javascript函数。函数本身更复杂,但我需要最后一段代码。通过单击“显示更多”,文本应该更改。为什么文本不会改变?
答案 0 :(得分:3)
因为在呈现html代码时toggleText
函数不可用。
换句话说,在页面准备好之前不会设置该函数,因此onclick
函数不会引用任何内容。
要么具有像http://jsfiddle.net/gtU56/2/
这样的功能或将其放在页面的头部,因为它需要立即准备好
如果您希望它等待ready
州,您可以执行以下操作并同时删除onclick
操作
$(".text").click(function()
{
$(".text").toggle();
});
答案 1 :(得分:1)
toggleText = function () {
$('.text').toggle();
}
答案 2 :(得分:1)
这是因为你正在加载这个功能。将它从onLoad切换到没有换行(头),它工作正常。
<强> jsFiddle example 强>
使用jsFiddle的onLoad将你的函数包装在window.onload调用中,如下所示:
<script type="text/javascript">
//<![CDATA[
$(window).load(function(){
function toggleText() {
$('.text').toggle();
}
});//]]>
</script>
虽然没有换行(head)只是像这样正常添加它:
<script type="text/javascript">
//<![CDATA[
function toggleText() {
$('.text').toggle();
}
//]]>
</script>
答案 3 :(得分:0)
由于您已声明拥有jquery
,因此您无需使用内联JavaScript。试试这个
var elems = $('.text');
elems.click(function(){
elems.toggle();
});
答案 4 :(得分:0)
$('.text').click(function() {
$('.text').toggle('slow', function() {
// do your animation..
});
});
答案 5 :(得分:0)
答案 6 :(得分:0)
首先,您应该像这样组织jQuery代码:
$.(document).ready(function() {
// enter jQuery code here
});
否则你正在访问一个未完全加载的html文档。
此外,如果您使用的是jQuery,则不需要事件监听器。
这应该适合你:
$.(document).ready(function() {
$('.text').click(function() {
$(this).toggle();
});
});
答案 7 :(得分:0)
很容易。您可以使用ID或CLASS。
onclick="$('NAME ID or CLASS').toggle(ANIMATION or DURATION);"
<div>
<div class="text" onclick="$('.text2').toggle(400);">Show More</div>
<div class="text2" style="display:none">Show Less</div>
</div>