Jquery将类添加到具有未知ID的span或div

时间:2015-04-16 10:36:46

标签: jquery

为新手问题道歉,但我想知道最好的方法是做什么?

我有一个包含两个表单的页面,这两个表单都会折叠/展开以显示其字段。这是处于折叠状态的表单的基本代码:

<div class="myForms">
    <span class="collapsed" id="form1">Form 1</span>
    <div id="target-form1" class="collapsed_content" style="display: none;">
    .
    *(form 1 code in here)*
    .
    <span class="collapsed" id="form2">Form 2</span>
    <div id="target-form2" class="collapsed_content" style="display: none;">
    .
    *(form 2 code in here)*
    .
</div>

如果单击其中一个表单进行展开,则会发生以下两种情况: (1)课程开放式#39;被添加到该表单的范围中 (2)表格div的样式更改为&#39; display:block&#39;

因此,例如,如果您单击表单1,最终会得到:

<div class="myForms">
    <span class="collapsed open" id="form1">Form 1</span>
    <div id="target-form1" class="collapsed_content" style="display: block;">
    .
    *(form 1 code in here)*
    .
    <span class="collapsed" id="form2">Form 2</span>
    <div id="target-form2" class="collapsed_content" style="display: none;">
    .
    *(form 2 code in here)*
    .
</div>

而不是&#39; form1&#39;,&#39; form2&#39;等等,每个表单的实际ID是由collapse / expand插件(Collapse-O-Matic)生成的随机ID(例如&#39; id7722&#39;)。 div id与&#39; target相同 - &#39;添加到前面(例如&#39; target-id7722&#39;)。

现在我的问题是,当我打开,比如表单1,输入一些数据,然后点击表单的更新按钮,表单崩溃(可能是它正在进行某种刷新以恢复它到页面加载(即折叠)时的状态。但是,我需要刷新表单并再次自动展开,以便内容立即可见。

我可以使用以下方式在表单1上正常运行:

<script type="text/javascript">
   setTimeout("jQuery('span#form1').addClass('open');",1);
   setTimeout("jQuery('#target-form1').css('display','block');",1);
</script>

...但我需要一个通用的JQuery,它可以执行上述操作,无论哪种形式都有点击更新按钮。我不需要测试页面上的哪个表单是打开的,因为表单插件(Formidable Forms)允许我将上面给出的代码片段输入到我创建的每个表单中。我只需要最终得到这个的JQuery版本:

<script type="text/javascript">
   setTimeout("jQuery('span id for the current form').addClass('colomat-close');",1);
   setTimeout("jQuery('div id for the current form').css('display','block');",1);
</script>

...而不是将表单id硬编码到span和div中?

1 个答案:

答案 0 :(得分:0)

<div class="myForms">
    <span class="collapsed" id="form1" onclick="$(this).next().addClass('blabla');">Form 1</span>
    <div id="target-form1" class="collapsed_content" style="display: none;"'>
</div>

有可能解决方案吗?

或者你可以:

$(document).on('click', 'span.collapsed', function(){
  $(this).next().addClass('blabla');
});