将单击 javascript 事件应用于 JSP 中的标头,而不是使用 <a> 标记

Posted

技术标签:

【中文标题】将单击 javascript 事件应用于 JSP 中的标头,而不是使用 <a> 标记【英文标题】:Apply on click javascript event to a header in JSP instead of using <a> tag 【发布时间】:2017-11-02 03:30:44 【问题描述】:

我目前有一个带有切换按钮的标题,点击时会展开。

html

<h3 class="toggle_header" id="Tax_information_eSignature">
    <a href="javascript:void(0);" class="icon_toggle_open"></a>
    <spring:message code="TaxInformation.eSignature" />
    <label for="Tax_information_eSignature"></label>
</h3>

JS:

$(document).on('click', '.icon_toggle_open', function (e) 
        stop(e);
        $(this).removeClass("icon_toggle_open")
            .addClass("icon_toggle_close")
            .attr("alt","Show")
            .attr("title","Show")
            .parent().next('.toggle_content').hide();
        $(window).blur();       
      );

     $(document).on('click', '.icon_toggle_close', function (e) 
        stop(e);
        $(this).removeClass("icon_toggle_close")
            .addClass("icon_toggle_open")
            .attr("alt","Hide")
            .attr("title","Hide")
            .parent().next('.toggle_content').show();
        $(window).blur();       
      );

目前正在按预期工作。用户需要单击切换图标来展开 div。

我希望在单击手风琴栏中的任意位置时触发展开/折叠,而不是单击展开按钮。我是 JSP 新手,谁能帮忙?

【问题讨论】:

删除执行切换的 id 或类,并将其添加到问题中显示的锚标记中,或者如果您共享完整代码会更好地帮助您 【参考方案1】:

您想在 DOM 中将事件侦听器设置得更高。尝试将您的事件侦听器从 .icon_toggle_open 移动到 .toggle_header

$(document).on('click', '.toggle_header', function (e) 
  stop(e);
  var opened = $(this).children('.icon_toggle_open')
  if(opened.length > 0)
    opened
      .removeClass("icon_toggle_open")
      .addClass("icon_toggle_close")
      .attr("alt","Show")
      .attr("title","Show")
      .parent().next('.toggle_content').hide();
   else 
    $(this)
      .children(".icon_toggle_close")
      .removeClass("icon_toggle_close")
      .addClass("icon_toggle_open")
      .attr("alt","Hide")
      .attr("title","Hide")
      .parent().next('.toggle_content').show();
  
  $(window).blur(); 
);

【讨论】:

没有用,我将分享所发生的屏幕截图以及可能有帮助的控制台的一部分。 pasteboard.co/dcOv9x8Rz.png 快到了。展开工作,但没有崩溃。谢谢 非常感谢您的帮助。【参考方案2】:

将事件监听器应用到整个h3 而不是a 标签:

document.querySelector('#Tax_information_eSignature').addEventListener('click', e => 
    // Expand your accordion bar by selecting it
);

我不知道您是如何设置“扩展”功能的,但我想看看您如何使用 javascript 来扩展手风琴栏。

【讨论】:

以上是关于将单击 javascript 事件应用于 JSP 中的标头,而不是使用 <a> 标记的主要内容,如果未能解决你的问题,请参考以下文章

从javascript方法转发到jsp不适用于浏览器

将悬停样式应用于任何孩子但不是父母

JavaScript 单击侦听器并单击事件委托功能,独立于库

java程序中如何实现单击页面a中的按钮跳转到页面b

事件委托 - 元素样式问题 - Javascript

如何将单击事件处理程序添加到从 javascript 创建的 userChat 类