javascript - 如何确保点击事件只对预期的类产生影响?

标签 javascript jquery google-chrome-extension

这是执行代码的重要部分。

我试图单击一个具有与为消息添加书签相关的特定 ID 的元素,但该元素不断触发另一个单击事件,该事件隐藏了类为“messageCase”的每个 div,同时将类 messageOpen2 附加到书签图像很奇怪的ID

“隐藏”类只是隐藏了包含的所有其他消息实例 messageCase 类。

var openMessageAnimationStrategy = function () {
    var openMessage = $(document).ready(function () {
        var divTarget = $("div.messageCase");

        $(divTarget).click(function (e) {
            var target = $(e.target);
            target.toggleClass('messageOpen2');
            divTarget.addClass('hidden');
            target.removeClass('hidden');
        });
    });
};

这是 HTML 的样子

<div class="messageCase">
    <div class="messageImageBox">
        <div id="messageImage">
        </div>
    </div>
    <div id="subjectLine">
        Subject Line Text
    </div>
    <div id="bookMarkImage">
        <img id="bookmarkStatus" class="savedMessage" src="notbookMarked64.png" />
    </div>
    <div class="activeBookmarks">
        {38} <br />
        Bookmarks <br />
        <br />
        9:53am
    </div>
    <div id="bodyPreview">
        Body Preview Text is light
    </div>
</div>

每次我在 bookmarkStatus 上使用 Click 事件来更改图像的 src 时,它都会导致执行第一个 click 事件,使所有内容消失,并将类 messageOpen2 添加到 bookmarkStatus。如有必要,我可以包含 CSS,但我会在下面列出书签功能的代码

var bookmarkedStrategy = function () {
    var bookmarkedStrategy = $(document).ready(function () {
        var bookmarkStatus = $("#bookmarkStatus");
        var divTarget = $('messageCase');
      //below trying to remove the Class that was attached by the initial function while also changing the image SRC for the class bookmark
        $(divTarget).click(function (e) {
            var target = $(e.target);
            divTarget.removeClass('messageCase2');
            bookmarkStatus.toggleClass('savedMessage');
        });
    });
};

我认为主要问题与初始功能有关,但我不知道还有什么其他问题,有什么想法吗?

edit 这是重要的 CSS。

  .savedMessage {
         background-image: url("bookmarked64.png");
     }
    .messageOpen2 {
       height: 250px;

        }
    .messageCase {
        margin: 5px;
        border-radius: 5px;
        background-color: aliceblue;
        height: 70px;
    } 
  #bookMarkImage {
        float:right;
        height:64px;
        width:64px;
        z-index:9999;
    }
  .hidden {
        display:none;
        max-height: inherit;



       }
 .activeBookmarks {
            float: right;
            text-align: center;
            font-size: 13px;

            font-weight: 700;
            text-decoration: solid;

        }

调用代码

var bookmarkedthings = new MessageHandling(bookmarkedStrategy);
bookmarkedthings.greet();
var openMessage = new MessageHandling(openMessageAnimationStrategy);
openMessage.greet();

最佳答案

少了一个。在您的 bookmarkedStrategy 函数代码中 var divTarget = $('.messageCase'); 添加点并重试

关于javascript - 如何确保点击事件只对预期的类产生影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353121/

相关文章:

php - 从本地 MySQL 自动填充外部站点上的表单字段

javascript - 如何使用 div 元素构建 Recurly.js 表单?

javascript - 从弹出窗口重新加载特定帧

javascript - Canvas 中的图像 ID

javascript - 上传 chrome 扩展程序到存储,包括 native 应用程序

.net - Chrome 的 ClickOnce 现在不支持 NPAPI?

javascript - Javascript Web 应用程序中的内存与速度

javascript - React 中的类变量与 ES6

javascript - jquery 检查输入文本是否为空不起作用

vue.js - 如何在 google chrome 扩展的构建项目中使用 VUEJS3 显示路由器 View