按id删除多个div的div

时间:2015-11-13 18:56:12

标签: javascript php html

在不同ID的情况下在多个div中使用下拉列表的最佳做法

我有一个用户流,当我添加一个下拉菜单添加删除时,编辑帖子等只会在顶部帖子上打开一个div,所以我知道它必须由一个唯一的ID来完成。

也许有些javascript?这就是我到目前为止所拥有的。

<div class="postdrop" id="postdrop'.$streamitem_data['streamitem_id'].'">
    <a class="postdrop_button postdrop_close" href="#">
         <span class="a rrow"></span>
    </a>
    <a class="postdrop_button postdrop_open"href="#postdrop">
         <span class="arrow"></span>
    </a>
    <ul class="postdrop_content">
        <li><a href="members.php">Edit</a></li>
        <li><a href="personalinformation.php">Privacy - </a></li>                                
        <li><a href="editinformation.php">Delete</a></li>                                        
    </ul>
</div>

2 个答案:

答案 0 :(得分:1)

你可以用普通的css做到这一点。

.postdrop_content {
    display:none;
}

然后你可以调用悬停事件的显示。

.postdrop_button.postdrop_open:hover + postdrop_content {
    display:block;
} 

请注意,在此特定情况下,由于悬停事件将显示下拉列表,因此您将无法将鼠标悬停在其上并保持元素保持打开状态。

您有两种方法可以解决此问题:

将:hover事件移动到父contianer(在这种情况下为postdrop),并在有下拉内容时给postpe一个类,例如postdrop_has_dropdown。然后,您可以使CSS选择器定位此元素,当您将鼠标悬停在下拉列表上时,悬停事件将保持激活状态。

.postdrop_has_dropdown:hover .postdrop_content {
    display:block;
}

使用一些简单的jQuery:

$('.postdrop_button.postdrop_open').on('click', function(){
    $(this).next().show();
});

$('.postdrop_button.postdrop_close').on('click', function(){
    $(this).next().hide();
});

答案 1 :(得分:1)

您可以使用javascript处理它。我建议使用Knockout js http://knockoutjs.com/

使用可观察数组填充您的Feed,您可以使用您希望使用的任何事件绑定执行javascript。

<div class="myFeed" data-bind="foreach: myFeed">
    <div class="feedItem" data-bind="event:{click: function(e){$root.doStuff($data e);}}">
        <div class="itemAction" data-bind="event:{mouseOver: function(e){$root.handleMouseOver($data)}}"></div>
    </div>
</div>

$ root对象是绑定到DOM的控制器。

$ data对象是数组中的对象

更新observableArray myFeed

时,Feed会更新
var myController = function()
{
    var self = this;
    this.myFeed = ko.observableArray([]);

    this.handleMouseOver = function(data)
    {
        // Do stuff with data
    };   

    this.doStuff = function(data, e)
    {
        // e is the event that triggered it. e.target is the element you want to manipulate
        // do stuff with data
    };
};