代码之家  ›  专栏  ›  技术社区  ›  irl_irl

告诉jquery要对哪个(唯一)div执行操作

  •  1
  • irl_irl  · 技术社区  · 15 年前

    我的计划是有很多盒子(一个未定义的数量)。单击某个框下的“显示框”时,将显示该特定框。

    我的HTML中有一些独特的div。DIV的独特之处在于:

    <div id="box-<%=box.id%>"></div>
    

    在我的 application.js 我有

    $('.show-box > a').click(function(){
    $('#box').show();
    });
    

    很明显我需要在 $('#box').show(); 但我不确定怎么做…

    编辑:添加更多信息

    <div class="show-box">
      <a href="javascript:void(0)">Show</a>
    </div>
    
    <div class="box" id="box-<%= box.id  %>"></div>
    

    这门课是为了造型。

    我知道javascript链接应该链接到实际的链接。我以后再修。

    4 回复  |  直到 15 年前
        1
  •  2
  •   user113716    15 年前

    你会使用 this 在处理程序内部引用特定的 .show-box > a 点击了。

    所以这取决于它和 box 要显示的元素。

    当你说 在下面 如果这意味着它是 .show-box 元素,您可以 use .parent() <a> 然后 use .prev() 返回到 .

    $('.show-box > a').click(function() {
          // "this" refers to the <a> that was clicked.
        $(this).parent().prev().show();
    });
    

    最终,正确的解决方案取决于实际的HTML标记。如果你在你的问题中提出这个观点,那将是有帮助的。

    如果需要,可以按ID选择,但通常不需要。

        2
  •  2
  •   Steven Raines    15 年前

    简单的方法是用一个ID命名您的框ID,或者在A中写入另一个属性。例如,如果您的标记的ID是“anchor1”,则为相应的DIV分配一个ID为“box-anchor1”。然后,这样引用它:

    $('.show-box > a').click(function(){ 
    $('#box' + this.attr('id')).show(); 
    }); 
    
        3
  •  1
  •   Jacob    15 年前

    如果显示它的框和链接在逻辑上是相关的,则可以使用以下方法跳过整个唯一ID业务:

    HTML

    <div class="container">
      <div class="box">
        <!-- stuff in the box -->
      </div>
      <a href="#">Show</a>
    </div>
    

    JQuery

    $("div.container a").click(function() {
      $(this).prev().show(); // prev() will get the div.box element.
    });
    

    另一方面,如果它们在结构上不相关,则可以使用URL的片段部分引用框ID:

    HTML

    <div>
        <div class="box" id="box-1">...</div>
        <div class="box" id="box-2">...</div>
    </div>
    
    <div>
        <a class="boxtoggler" href="#box-1">Show Box 1</a>
        <a class="boxtoggler" href="#box-2">Show Box 2</a>
    </div>
    

    JQuery

    $("a.boxtoggler").click(function() {
        var boxId = $(this).attr("href");
        $(boxId).show();
    });
    

    注意我们是如何滥用这样一个事实的:URL的片段部分前面有一个 # 使其成为CSS ID的字符;)

        4
  •  0
  •   Orr Siloni    15 年前

    不确定我理解您的问题,但如果您想显示单击框:

    $('.show-box > a').click(function(){
    $(this).parents('.show-box').show();
    });