javascript - 无法使用此 onclick 功能显示 p 标签
问题描述
我在 Jquery 方面有一点经验,在这里我试图创建一个 jquery 插件,但我被困在这里,我试图显示 p 标签元素按钮被点击,
$(function() {
var myFirst = {
paragraph: $('p'),
init: function() {
$("<button></button>", {
text: "My New Button"
}).appendTo('.mybutton')
.on('click', function() {
$(this).find('p').show();
});
}
}
myFirst.init();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mybutton"></div>
<p style="display:none;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad illo nobis mollitia. Ex nemo quae vero, rem, magnam numquam repudiandae. Labore laborum officia corporis sint voluptatem est, odio quidem libero.</p>
解决方案
问题在于您的 DOM 遍历。这p
是button
您附加的父级的兄弟姐妹,但您正试图find()
在按钮内。改用parent().next('p')
:
$(function() {
var myFirst = {
paragraph: $('p'),
init: function() {
$("<button></button>", {
text: "My New Button"
}).appendTo('.mybutton').on('click', function() {
$(this).parent().next('p').show();
});
}
}
myFirst.init();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mybutton"></div>
<p style="display:none;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad illo nobis mollitia. Ex nemo quae vero, rem, magnam numquam repudiandae. Labore laborum officia corporis sint voluptatem est, odio quidem libero.</p>
话虽如此,这里的逻辑与 HTML 的结构耦合得太紧密了。我建议在您的init()
逻辑中创建所有相关元素 - 但是,如果这只是为了测试,您不一定需要深入研究。
推荐阅读
- c++ - CPP 包括在 azure devops 中设置的目录
- google-app-engine - “network: session_affinity:true” app.yaml 文件的属性没有反映在谷歌应用引擎中
- c - 如何分析C头文件?
- python - 如何在 tkinter 中的窗口类之间传输信息?
- xamarin - 在 Mac OS 上运行的 Xamarin Forms 中。如何访问资产目录以在 iOS 中添加新图标?
- kubernetes - Kops,自动缩放策略没有正确配置主节点?
- c# - 如何在 C# 中将 .proto 文件解析为 FileDescriptor?
- python - 创建一个“词汇表”来对词频具有相同含义的词进行分组
- javascript - React.js:如何在渲染页面之前先运行 useEffect?
- c# - EF Core 无法通过 IQueryable.Where 动态实现 OR 转换