我正在使用jQuery来显示和隐藏每个帖子的编辑选项。这是我正在使用的jQuery:
$(document).ready(function () {
$(".post-menu").click(function () {
$(".menu-options ul").toggle();
});
$(".edit-option").click(function () {
$("#edit-post").show();
$(".menu-options ul").toggle();
});
$("#never-mind").click(function () {
$("#edit-post").hide();
});
})
关于代码的简介:后菜单是处理show hide事件的div,edit-options是必须弹出的<ul>
,包含编辑和删除{{ 1}}在其中,#edit-post是textarea的div,提交按钮(使用ajax jquery;不需要表单),#never-mind是一个关闭它的按钮。
div代码是:
<li>
所需行为:仅显示所选帖子的选项面板。
当前行为:问题是当我只想显示所选帖子的选项面板时,它会取消每个帖子的选项面板。
我做错了什么?
答案 0 :(得分:2)
假设你有多个div post-menu
&amp;你需要相应的菜单选项来根据上下文切换。这就是你需要的。
$(".post-menu").click(function (e) {
$(this).find(".menu-options ul").toggle();
});
编辑:正如@Roko所说..如果你不想冒泡事件传播..
使用e.stopPropagation()
答案 1 :(得分:2)
<div style="width: 20px; height: 8px;" />Options</div>
不是关闭DIV元素的方式(注意/>
)
如果要处理多个元素,请避免使用ID
使用正确的选择器来完成$(this).next()
等工作......并且你已经完成了。
答案 2 :(得分:1)
对于有多个条目的jfiddle很有用,但我认为你只需要添加$(this)
此外,您可能需要将菜单选项转换为ID而不是类
$(document).ready(function () {
$(".post-menu").click(function () {
$(this).(".menu-options ul").toggle();
});
$(".edit-option").click(function () {
$(this).("#edit-post").show();
$(this).(".menu-options ul").toggle();
});
$("#never-mind").click(function () {
$(this).("#edit-post").hide();
});
})
答案 3 :(得分:1)
我参加聚会有点晚了,但这是我的回答。
这里有一些问题(这就是为什么需要一段时间才能发布此内容)。
next()
或parent()
。看我的例子。修改后的HTML:
<div class="post-menu" id="PostMenu1">
<div style="width: 20px; height: 8px;" id="OptionsDiv">Options</div>
<div class="menu-options">
<ul id="myUL" class="myUL">
<li class="edit-option">Edit</li>
<li class="delete-option">Delete</li>
</ul>
</div>
</div>
<div style="display: none;" class="edit-post">
<textarea id="new-post-message">@row.Message1</textarea>
<br>
<button class="savebutt" onclick="updatepost(@row.PostId)">Save</button>
<button class="never-mind">Never mind</button>
<div class="error-post"></div>
</div>
<!-- ---------------------------------------------------------- -->
<div class="post-menu" id="PostMenu2">
<div style="width: 20px; height: 8px;">Options</div>
<div class="menu-options">
<ul>
<li class="edit-option">Edit</li>
<li class="delete-option">Delete</li>
</ul>
</div>
</div>
<div style="display: none;" class="edit-post">
<textarea id="new-post-message">@row.Message2</textarea>
<br>
<button onclick="updatepost(@row.PostId)">Save</button>
<button class="never-mind">Never mind</button>
<div class="error-post"></div>
</div>
修订过的JQUERY:
$(".post-menu").click(function () {
$(this).find(".menu-options ul").toggle();
});
$(".edit-option").click(function (e) {
$(this).find(".edit-post").show();
//var x = $(this).closest('div').parent().next().attr('class');
//alert(x);
//$(this).parent().parent().find('ul').toggle();
$(this).closest('div').parent().next().toggle();
e.stopPropagation();
//var x = $(this).parent().parent().find('ul').attr('class');
//alert(x);
});
$(".never-mind").click(function () {
//var x = $(this).closest('div').attr('class');
//alert(x);
$(this).closest('div').hide();
});
$('.delete-option').click(function(e) {
var x = $(this).closest('div').parent().attr('id');
alert('Deleting DIV with ID: ' + x);
e.stopPropagation();
});