我有这个jquery脚本,它假设根据单击的超链接隐藏/显示div元素。我不知道为什么,但它根本不起作用。下面是我的代码的例外。
function hide_current_commoncontainer(commoncontainer){
$(commoncontainer).each(function(){
if(this.is(":visible")){this.hide();}
});
}
function init(){
$("#compose_link").bind("click",function(){
hide_current_commoncontainer(".pmcommoncontainer");
("#composer").show();
return false;
}
);
if(Drupal.jsEnabled){
$(document).ready(init);
}
我已经找出了原因,发现是显示/隐藏功能不起作用。rest --函数调用--是正常的。有人能告诉我我哪里做错了吗?我应该在哪里修改我的代码,以便按照我想要的方式隐藏/显示div元素。
发布于 2010-02-24 05:18:05
在("#composer").show();
和this
之前,你错过了$
不应该是$("#composer").show();
和$(this)
吗?此外,请确保您已经引入了show/hide
的定义
发布于 2010-02-24 19:07:26
好了,我发现了$("#composer").show()不起作用的原因。这是因为我将这些div的可见性样式硬编码为“隐藏”,而jquery的"show“方法无法逆转这一点。奇怪的是,与"show“方法相反,"hide”可以毫无问题地还原硬编码的“可见”样式。因此,要想按照预期隐藏/显示元素,我必须使用隐藏/显示方法组合而不使用可见性样式硬编码,或者使用jquery的css方法并根据需要设置可见性样式。
发布于 2010-02-24 05:25:00
我建议你做像这样的事情
$(function() {
$('#compose_link').click(function(e) {
$('.pmcommoncontainer').children(':visible').hide();
$('#composer').show();
e.preventDefault();
});
});
这将显示id为composer的元素,并在id为compose_link的元素被单击时隐藏类pmcommoncontainer的所有可见子元素。
我认为这就是您想要做的--不需要迭代,因为jQuery使用sets :)。
编辑
看起来你也想要停止点击或发布-通过事件,你可以使用preventDefault()函数来停止该行为。
https://stackoverflow.com/questions/2323833
复制相似问题