next不起作用
jQuery .next is not functioning
在此处(文档标题中)使用以下jQuery:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
function ExpCol(obj)
{
var nextDiv = obj.next("div");
nextDiv.animate({height: 'toggle'}, 800, function(){
var vClass = nextDiv.is(':visible') ? 'collapse' : 'expand';
obj.children(":first").removeClass().addClass(vClass);
});
}
</script>
HTML标记是这样的(在正文中):
<div id="reqMat" onclick="ExpCol(this);">
<span class="expand"></span><h4 class="inlineblock">Header Text Here</h4>
</div>
<div style="display: none;">
<p class="desc">Text in here...</p>
<p class="desc">Text in here...</p>
</div>
单独样式表中的CSS如下所示:
.inlineblock
{
display: inline-block;
}
.expand, .collapse
{
cursor: pointer;
display: inline-block;
font-size: 1.5em;
padding-right: .1em;
color: #605953;
}
.expand {
content: "+";
}
.collapse
{
content: "-";
}
为什么next不起作用?是因为我正在将this
对象传递给它吗?如果是,正确的方法是什么?
.next()
在普通DOMElement中不可用(除非您自己添加一个)。您正在将DOMElement传递给ExpCol()
,而不是jQuery对象。
更改
ExpCol(this);
至
ExpCol($(this));
this
不是jQuery对象,也没有为其定义next
函数。(this
是单击事件的源,在本例中是div
DOM元素本身)
我想你打算:
var nextDiv = $(obj).next("div");
然而,由于您也有一个呼叫obj.children
,我建议您将代码更改为:
function ExpCol(element)
{
var obj = $(element);
var nextDiv = obj.next("div");
nextDiv.animate({height: 'toggle'}, 800, function(){
var vClass = nextDiv.is(':visible') ? 'collapse' : 'expand';
obj.children(":first").removeClass().addClass(vClass);
});
}
或者用ExpCol($(this))
调用它,尽管这需要您始终记住向ExpCol
传递一个jQuery对象。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- 分部隐藏在jquery中不起作用
- 在phonegap应用程序内部重定向不起作用
- Array.length似乎不起作用;console.log则显示其他情况
- $ionicplatform内的$scope不;不起作用
- 使用next()的jQuery目标元素不起作用
- 滑动面板 .stop() 在 $(this).next 上不起作用
- .next() 在 .each() 循环中不起作用
- jquery next()不起作用
- next不起作用
- jquery .next 不起作用