jquery - 如何将同一事件应用于多个按钮?

标签 jquery html css

我正在尝试“切换”按钮点击后显示的信息。我有多个按钮,单击每个按钮时,我想显示或隐藏一段文本。

不幸的是,现在当我点击一个按钮时,它会显示或隐藏所有文本 block ,而不是一个。

这是我自己编写的第一个脚本,所以如果我使用了不正确的语法,请原谅,但这是我认为有必要使用而不是切换的脚本(因为它已被弃用)。

这是我的脚本:

<asp:Content ID="Content2" ContentPlaceHolderID="headCustomScriptsCSS" runat="server">
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script>
        $(document).ready(function (e) {
            $('button').click(function () {
                if ($(this).hasClass("clicked")) {
                    $('p').show();
                    $(this).removeClass("clicked");
                } else {
                    $('p').hide();
                    $(this).addClass("clicked");
                }
            });
        });
    </script>
</asp:Content>

我的一些 HTML 代码:

<asp:Content ID="Content3" ContentPlaceHolderID="cpMainContent" runat="server">
    <h1>
        Add a New Application</h1>
    <h3>
        General Description</h3>
    <div>
        <div class="column-left">
            <label for="EnglishShortName">
                English Short Name</label>
        </div>
        <div class="column-center">
            <input type="text" name="EnglishShortName" />
        </div>
        <div class="column-right">
            <button type="button" class="myButton">
                ?</button>
        </div>
        <div class="help">
            <p>
                This is the paragraph to end all paragraphs. You should feel lucky to have seen such a paragraph in your life. Congratulations! </p>
        </div>
    </div>
    <div>
        <div class="column-left">
            <label for="FrenchShortName">
                    French Short Name</label>
        </div>
        <div class="column-center">
            <input type="text" name="FrenchShortName" />
        </div>
    </div>
    <div>
        <div class="column-left">
            <label for="ApplicationCode">
                Application Code</label>
        </div>
        <div class="column-center">
            <input type="text" name="ApplicationCode" /><br />
        </div>
        <div class="column-right">
            <button type="button" class="myButton">
                ?</button>
        </div>
        <div class="help">
            <p>
                This is a paragraph much like the last one.  It is a paragraph to end all paragraphs. You should feel lucky to have seen such a paragraph in your life. Congratulations! </p>
        </div>
    </div>
...

和我的一些 CSS:

.column-left
{
    text-align: right;
    float: left;
    width: 30%;
    padding-top: 10px;
    padding-bottom: 10px;
    padding-right: 5px;
}
.column-right
{
    float: right;
    width: 20%;
}
.column-center
{
    display: inline-block;
    width: 46%;
    padding-top: 10px;
    padding-bottom: 10px;
}
.help
{
    width: 50%;
    margin-left:25%;
    border:1px dotted black;
    text-align:justify;
}

我还有多个这样的按钮可以显示和隐藏文本。我的问题是,如何让每个按钮分别处理事件?我需要编写多个脚本吗?

提前致谢!

最佳答案

当你这样做时:

$('p').show();

您正在获取所有 p 元素并显示它们。

但要执行您想要的操作,您需要导航以获取正确的帮助元素。

修复代码的一种快速方法是更改​​两行: 1

$('p').show();

$(this).parent().next().show();

2

$('p').hide();

通过

$(this).parent().next().hide();

它会做你想做的。

关于jquery - 如何将同一事件应用于多个按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23478935/

相关文章:

php - 加载大型JQuery图库的解决方案

javascript - 使用javascript对元素内的数字进行四舍五入

jQuery 绑定(bind) keyup、keydown - 无法在表单字段中输入内容

javascript - 如何将表单值提交到由 FORM 输入值组成的 URL?

html - 使菜单(li)内的输入字段响应

javascript - 如何使用 jquery/js 使内容在悬停时显示在另一个下方(如 <li> 列表)

html - Materialise float 标签重叠

javascript - 如何根据通过 JavaScript 添加的类更改元素的::before 内容?

javascript - 动态使用 iframe 作为页面覆盖

javascript - 如何在动态div和与之关联的动态按钮上添加点击功能