2012-07-25 50 views
2

好吧,我使用Razor和jQuery 1.5.1,如果这影响了答案。JQuery事件不会触发后被连接

我有一些简单的jquery,我从本网站上的另一篇文章复制。我有可变数量的部分使用Razor引擎呈现。

我希望能够隐藏/下的每个部分显示数据(其被包裹在一个div。)

所以HTML是

<div>Course 1<a class="toggle" href="javascript:void(0);">Click</a> 
<div class="contentHidden" style="display:none;"> content here </div></div> 
<div>Course 2<a class="toggle" href="javascript:void(0);">Click</a> 
<div class="contentHidden" style="display:none;"> content here </div></div> 

而jQuery是;

<script type="text/javascript"> 
$(document).ready(function(e) { 
    $(".toggle").click(function (e) { 
    e.preventDefault(); 
    $(this).children("div").toggle(); 
    }); 
}); 

jQuery的是在视图的底部,我在document.ready添加在位,确保<a>标签确实存在。

我考虑过的一件事是,我使用剃须刀@foreach()创建页面内容,但是在将内容传输到浏览器之前必须在服务器上进行,所以我不相信我之前正在这样做链接已创建,并且不需要使用直播或委托。

但现在我卡住了,所以任何人都可以建议我怎么可以跟踪下来(或更好,但修复它:-)

回答

4

a元素没有div孩子。相反,它是下一个元素:

$(this).next("div").toggle(); 

视觉上div可能是a元素。但是,重要的是DOM结构,其中diva的兄弟。

+0

该死的,我只是关闭了开发PC。我会在早上检查这件事情,如果它起作用,就把我的头埋在耻辱中,然后给你打个招呼,谢谢。我甚至确保我将这些内容包装在主div中,并且没有发现明显的:$。 再次感谢! – Matt 2012-07-25 19:32:11

+0

'$(this).siblings('。contentHidden')。toggle()'也是一个选项,如果你想隐藏的div不总是下一个元素 – MrOBrian 2012-07-25 19:33:51

+0

是。 'div'不在'a'内,因此它不是小孩。 – jackwanders 2012-07-25 19:33:54