2009-07-15 166 views
0

我写了一个代码,用于在单击链接时显示div元素(shareform),并在链接再次单击时隐藏它。我有许多窗体,在这个窗体下将显示这个“分享”链接。如果我只有一个窗体,此代码工作正常。也就是说,最初'shareform'元素是隐藏的,当我点击链接时,它会显示出来,当我再次单击该链接时,'shareform'被隐藏。隐藏/显示div类

如果我有2个窗体,第二个窗体的'shareform'元素最初不会隐藏。这不是$('#shareform')。hide();假设隐藏所有共享链接的表单?

此外,当我点击第二个“共享”链接时,'shareform'显示并隐藏在第一个“共享”链接。我究竟做错了什么?有人能帮我吗?

var flag=0; 
    $('#shareform').hide(); 
    $(".Share").click(function(){ 
     if(flag==1){ 
      $('#shareform').hide('fast'); 
      flag=0; 
     } 
     else{ 
      $('#shareform').show('slow'); 
     flag=1; 
      return false; 
     } 

    });//.Share click 

    $("#shareform .button").click(function(){ 
     $("#userList option:selected").each(function(){ 
      selected_value[i]=$(this).val(); 
      alert(selected_value[i]); 
      i++; 
     }); 
    }); 

    <li id="Share<?php echo $r['Form']['id']?>"> 
    <a href="#" class="Share">Share</a> 
    <form action="/cake_1_2/forms/share/<?=$formid?>/<?=$userid?>" method="post" name="shareform" id="shareform"> 

    <p>Select the users with whom you want to share the Form</p> 
    <select id="userList" name="userList" multiple> 
    <?php foreach($users as $user){ ?> 
     <option value="<?=$user['User']['name']?>"><?=$user['User']['name'];?></option> 

    <?php }?> 
     </select> 
     <input type="submit" class="button" value="Share"/> 
    </form> 
</li> 

编辑: 对不起,其实我想怎么把这个类是指单独的链接只隐藏id元素share_form,不是类“分享”。我也改变share_form分享,它仍然无法正常工作。

编辑2:

好吧,我已经改变了ID类,即类= 'shareform'。现在,shareform类最初是隐藏的。但是,如果我点击“分享”链接,则会为这两个表单显示“shareform”类。

+0

一个简单的建议,以简化一些事情。为什么不设置shareform的CSS来显示:none而不是使用$('#shareform')。隐藏(); 另一个建议,您是否查看过PHP页面的源代码/输出以确认您使用的是正确的ID?切换shareform ID的可见性应该非常简单,您应该可以使用$(“#shareform”)来选择它 – mga911 2009-07-15 07:11:59

+0

根据您的“编辑2”更新,我更新了我的答案。 – mga911 2009-07-15 07:19:43

回答

2

您确定您正在为不同的表单分配不同的ID给不同的分享div吗?

这条线在你的问题使我相信你不是:

如果我有2种形式, 第二种形式是不是隐藏 最初的股份类别。是不是这个 $('#share_form')。hide();假设为 隐藏课所有的分享 链接?

此外,该行不会隐藏共享div的类,因为您只针对具有“#”号的特定ID。要使用类共享来定位共享div,您需要使用$('。Share')。hide();

编辑2:这两个div都显示,因为你是由类指定针对他们两个。相反,您希望通过ID单独定位它们。你需要改变这一行$(“。Share”),点击$(“#Share1”),点击然后添加另一个函数$(“#Share2”)。

+0

k,我得到我要求的,现在谢谢你.. – Angeline 2009-07-15 10:56:16

2

对于隐藏/淡入淡出的互动我建议您使用Effects/toggle函数。

$('#share_form').hide(); 

上面的代码行将隐藏id =“share_form”元素的整个表单元素。

2

#实际上是'ids'的jQuery简写。要隐藏课程,请将#更改为.Share,然后重试。

0

我看到的第一件事是“share_form”带下划线,有时jQuery不能选择带下划线的元素,请尝试“share-form”。