javascript - 在 jQuery 中控制 wrap 和 unwrap 方法

标签 javascript jquery

我正在编写下面的演示代码。我如何以这些方式使用 jQuery?:

1- 包装 p只有当它还没有用 .check-wrap-sapn 包裹时

2- 仅展开 .check-wrap-sapn而不是任何其他 parent ?

现在发生了什么,jQuery 包装了 p带有 .check-wrap-sapn 的元素只要用户点击#wrap并删除 p 的所有父级即使没有任何名为 .check-wrap-sapn 的包装器

$("#wrap").on("click", function() {
  $("p").wrap("<div class='check-wrap-sapn'></div>");
});

$("#unwrap").on("click", function() {
  $("p").unwrap("<div class='check-wrap-sapn'></div>");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="container">
  <div class="well">
    <p>This is for Wrapping</p>
  </div>
</div>

<button class="btn btn-default" id="wrap">Wrap</button>
<button class="btn btn-default" id="unwrap">Un Wrap</button>

最佳答案

使用 parent() 获取它的父级 并检查它是 .check-wrap-sapn 还是不使用 is()

var $p = $("p");

$("#wrap").on("click", function() {
  if ($p.parent().is(':not(.check-wrap-sapn)'))
    $p.wrap("<div class='check-wrap-sapn'></div>");
});

$("#unwrap").on("click", function() {
  if ($p.parent().is('.check-wrap-sapn'))
    $p.unwrap("<div class='check-wrap-sapn'></div>");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="container">
  <div class="well">
    <p>This is for Wrapping</p>
  </div>
</div>

<button class="btn btn-default" id="wrap">Wrap</button>
<button class="btn btn-default" id="unwrap">Un Wrap</button>

关于javascript - 在 jQuery 中控制 wrap 和 unwrap 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32776634/

相关文章:

javascript - 如何在可滚动的 div 中制作一个固定宽度为 940px 的框?

javascript - Angular 选择/下拉分层数据

javascript - 如何将 Markdown 解析为 AST,对其进行操作,然后将其写回 Markdown?

javascript - 溢出内容的滚动条占据了 100% 高度固定位置侧边栏的一部分

javascript - 在另一个对象内部传递对象引用

jQuery - 扩展菜单

javascript - 将React的setState函数包装在ES8的async/await中

javascript - 无法使用 jQuery 获取表单的选择元素值

javascript - 在 Javascript 中使用多个提交按钮处理表单提交

jquery - R Shiny : How do I put local images in shiny tables