【问题标题】:How to give my list of DIV elements a checkbox functionality?如何为我的 DIV 元素列表提供复选框功能?
【发布时间】:2012-06-05 14:34:07
【问题描述】:

我有一个显示列表的简单 HTML 页面。列表中的每个项目都是一个 div 元素(圆角框),其中包含一些数据和一个复选框。
现在我正在尝试为 div 提供复选框的功能,这意味着当用户单击 div 我希望它更改颜色(或显示 V 的图像)以及当用户提交页面时我想要所有项目已检查要发送的 ID。
这是 HTML 的片段:

<!-- item only list -->     
<div class="container">
  <ul class="plainList">
    <c:forEach items="${itemsFrom.itemsOnly}" var="item" varStatus="status">            
      <li>
        <div class="inner">
          <img src="resources/images/${item.id}.png">           
          <ul class="plainList">             
            <li><h4>${item.title} &trade;</h4></li>              
            <li><h5>${item.description}</h5></li>            
          </ul>            
          <input style="float: right;" type="checkbox" name="itemIds" value="${item.id}" />           
          <div style="clear: both"></div>           
        </div>           
      </li>         
    </c:forEach>      
  </ul>     
</div> 

谁能帮我开始:JQuery? CSS?。有什么简单的例子吗?

【问题讨论】:

    标签: jquery css spring-mvc


    【解决方案1】:

    你读过jQuery API 吗?
    有多种方法可以实现您的目标,但对我来说,更有效的是使用 jQuery 和事件click
    在您的示例中,您必须在每个具有 inner 类的 div 上绑定事件 click
    语法是:

    $(document).ready(function(){
        $(".inner").click(function(){
            //Do some stuff
        });
    });
    

    在第二部分,jQuery 包含了函数.css(),它允许你设置匹配元素的css-property。
    例如,如果您想更改 div 的背景图像:

    $(document).ready(function(){
        $(".inner").click(function(){
            $(this).css("background-image","url(path/to/your/image)");
        });
    });
    

    你会明白这个sn-p代码不会重现“复选框功能”,而只是改变你div的背景一次。
    你应该看看 jQuery 事件.toggle()

    为了帮助你,这是做你想做的事的语法:

        $(document).ready(function(){
    
            $(".inner").toggle(
                function(){
                    $(this).css("background-image","url(path/to/your/image1)");    
                },
                function(){
                    $(this).css("background-image","url(path/to/your/image2)");
                }
            );
    
        });
    

    【讨论】:

    • 感谢您的详细回复。这些例子很有帮助,我让我的物品改变了背景。我仍然坚持将检查的 ID 返回到服务器,如何从列表中的每个选定元素中检索 ${item.id}
    • 您必须为&lt;div&gt; 元素设置一个属性,例如(如果${item.id} 是唯一的):&lt;div id="${item.id}" class="inner"&gt;,那么在您的toggleclick 函数事件中,这由选择器$(".inner")(您的项目的div)初始化,您将通过this.id$(this).attr("id") 检索${item.id}
    • 好的。所以我检索 Id,将它们推送到一个数组中。一个新问题:到目前为止,当用户单击“提交”按钮时,所有数据都会自动发送到服务器(选中的复选框作为数组以及开始/结束时间)。现在我得到:“客户端发送的请求在语法上不正确”,如何将数组返回给服务器?我需要覆盖我的按钮的 onClick 吗?
    【解决方案2】:

    这样的事情可能会对你有所帮助。我不知道您希望哪些 div 具有此功能,但我建议将它们分组。

    $(".inner").click(function(){
       $(this).css("background-color", "red");
    })
    

    【讨论】:

    • 好的。效果很好。您能帮我完成第二部分:将检查的 ID 返回到服务器,我如何从列表中的每个选定元素中检索 ${item.id}
    猜你喜欢
    • 2010-12-17
    • 2012-10-23
    • 1970-01-01
    • 2021-08-06
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    相关资源
    最近更新 更多