【问题标题】:Trigger event on a different page using jquery or JavaScript使用 jquery 或 JavaScript 在不同页面上触发事件
【发布时间】:2016-12-31 08:19:42
【问题描述】:

我正在做一个有 2 页的项目。

1) 索引和 2) 设置

我有一个按钮来关闭一个元素并将其隐藏在设置页面上。问题是,当我在设置页面中单击关闭并选择保存时,我想隐藏索引页面上的元素。我无法达到同样的效果。任何帮助,将不胜感激。 我发现的大多数解决方案只是使用 Jquery 重定向到其他页面,但我想触发一个事件而不仅仅是重定向。

我已经为此创建了一个代码笔:http://codepen.io/crazycoder775/pen/pNYJOw

  $(".list_sbar li").click(function(e) {
    if ($(this).outerWidth() - 34 <= e.offsetX)
        $(this).remove();
});
$(".list_sbar li").click(function(e) {
    if ($(this).outerWidth() - 34 <= e.offsetX)
        $(this).remove();
});
$(document).ready(function(){
    $("#hide").click(function(){
        $(".test1").hide();
    });
    $("#show").click(function(){
        $(".test1").show();
    });
});
$(document).ready(function(){
    $("#hide2").click(function(){
        $(".test2").hide();
    });
    $("#hide3").click(function(){
        $(".test3").hide();
    });
});

在上面的 codepen 中,我有 3 个 div 和 2 个关闭按钮,点击任何关闭按钮,相应的 div 将附加一个隐藏类。

【问题讨论】:

  • 我没有收到你的问题。实际上你想在点击关闭按钮时隐藏一个 div 吗??
  • 是的,我想在单击关闭按钮时关闭一个 div。您可以在上面的 codepen 中检查相同的内容,但目前这两个事件都在同一页面上。我希望它们出现在不同的页面上。

标签: javascript jquery css events event-handling


【解决方案1】:

您可以将 cookie 值(可以在单击关闭按钮时设置)与 $(window).focus 事件侦听器结合使用,该事件侦听器检查 cookie 值并在索引页面获得焦点时根据该值隐藏或显示元素。

Cookie 文档:https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie

尝试以下方法:

  $(document).ready(function(){
    if( document.cookie.indexOf('element_closed=')== -1){
        document.cookie = 'element_closed=false; path=/';
     }
    // document.cookie = "element_closed=true"; // uncomment to test focusing window with element hidden
    // used to get an individual cookie by name
    // from http://stackoverflow.com/questions/10730362/get-cookie-by-name
    function getCookie(name) {
      var value = "; " + document.cookie;
      var parts = value.split("; " + name + "=");
      if (parts.length == 2) return parts.pop().split(";").shift();
    }

    function hideElement(){
      $(".toggle_target").hide();
      document.cookie = 'element_closed=true; path=/'
      console.log(document.cookie);
    }

    $(window).focus(function(){
      //console.log(document.cookie);
      console.log(getCookie('element_closed'));
      if(getCookie('element_closed') == 'true'){
        hideElement();
      }
    });

    $(".toggle").on('click', function(e){
      e.preventDefault();
      hideElement();
    });
  });

工作 jsfiddle:https://jsfiddle.net/b1nyczht/20/

【讨论】:

  • 感谢您的努力。我正在尝试使用 JS cookie,但尚未修复它。将尝试看看这是否有帮助。 github.com/js-cookie/js-cookie
  • 期待您的代码。同时我正在尝试,如果我得到答案会更新
  • 更正 - 代码需要调整,完成后会评论。
  • 感谢您的代码。现在我有一些问题要问你。该代码在同一页面上运行良好,但如何在单独的页面上使用它们?从您的 jsfiddle 代码中,我在索引页面上使用 div 标签,在设置页面上使用标签。我在两个页面上都尝试了脚本,但它不起作用。难道我们不需要定义我们试图触发事件的其他页面的路径吗?
  • 更新了在 cookie 上设置路径属性的代码。
猜你喜欢
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
  • 2016-10-10
相关资源
最近更新 更多