【问题标题】:Multiple buttons to control popups individually多个按钮可单独控制弹出窗口
【发布时间】:2018-04-05 22:10:25
【问题描述】:

我在寻找创建弹出窗口的方法时发现了这段代码,它确实有效,但我试图弄清楚如何使它与多个动态创建的 div 一起工作。

function popupOpenClose(popup) {

/* Add div inside popup for layout if one doesn't exist */
if ($(".wrapper").length == 0){
    $(popup).wrapInner("<div class='wrapper'></div>");
}

/* Open popup */
$(popup).show();

/* Close popup if user clicks on background */
$(popup).click(function(e) {
    if ( e.target == this ) {
        if ($(popup).is(':visible')) {
            $(popup).hide();
        }
    }
});

/* Close popup and remove errors if user clicks on cancel or close buttons */
$(popup).find("button[name=close]").on("click", function() {
    if ($(".formElementError").is(':visible')) {
        $(".formElementError").remove();
    }
    $(popup).hide();
});
}

$(document).ready(function () {
    $("[data-js=open]").on("click", function() {
        popupOpenClose($(".popup"));
    });
});

我希望能够使用多个按钮来控制单个 div,例如 id 为“pop1”的按钮将打开 div“popup1”,id 为“pop2”的按钮将打开 id 为“popup2”的 div 等。

<button id="pop1">Open popup</button>
<button id="pop2">Open popup</button>

<div id="popup1" class="popup">
    <h2>This is my popup 1</h2>
    <button name="close">Close popup</button>
</div>
<div id="popup2" class="popup">
    <h2>This is my popup2</h2>
    <button name="close">Close popup</button>
</div>

我使用 php 动态创建按钮和 div,因此没有设置数量,我想确保无论生成多少它们都能正常工作。对于每个新的 div,它都会增加 id 上的数字,就像您在上面看到的那样。

我尝试这样做,但按钮将打印所有可用 div 中的所有内容,因为我没有单独定位它们。我无法弄清楚那部分。

$(document).ready(function () {
    $("button[id*=pop]").on("click", function() {
        popupOpenClose("[id*=popup]");
    });
});

有人有什么建议吗?谢谢。

【问题讨论】:

  • 我可以看看你动态添加的div代码吗??
  • 它只是一个 foreach 循环。基本上 $increment = $increment++; foreach ($buttonDiv as $data){ echo ''; echo '
    东西
    ';
  • 对不起,这只是一个草率的快速打字。我只是从 mysql 中提取值并在 id 上添加一个增量
  • 没关系,所以您尝试在页面加载后在运行时添加那些 div,对吗?
  • 我只是想弄清楚如何让按钮 1 目标 div 1 和按钮 2 目标 div 2 等尽我所能。因此,如果我有 20 个按钮和 20 个 div,我希望每个按钮都控制匹配的 div。 button id="1" 使 div id"1" 弹出等。这是我找到的原始代码。我只是想改变它为我工作。 codepen.io/rachel_web/pen/YXMEqO

标签: javascript jquery button dynamic


【解决方案1】:

我已经对您的 html 进行了一些更改,因为这样很容易获取元素

<button id="pop_1" class="btnpopUpOpen">Open popup</button>
<button id="pop_2" class="btnpopUpOpen">Open popup</button>

<div id="popup_1" class="popup">
<h2>This is my popup 1</h2>
<button name="close">Close popup</button>
</div>
<div id="popup_2" class="popup">
   <h2>This is my popup2</h2>
<button name="close">Close popup</button>
</div>

jQuery 代码:

$("button.btnpopUpOpen").on("click", function(e) {
e.preventDefault();
var myID=$(this).prop('id').split('_')[1];
 popupOpenClose('div.popup_'+myID);
});

$("form button[name=close]").off().on('click',function(e){
e.preventDefault();
 if ($(".formElementError").is(':visible')) {
    $(".formElementError").remove();
}
$(this).parent().hide();
});

注意:如果您尝试在页面加载后动态添加 div。请务必同时重新注册您的事件

【讨论】:

  • 我似乎无法让它工作,不知道为什么,我对javascript不太了解。稍后我会尝试更多地了解它并尝试弄清楚。非常感谢您提供帮助。
  • 它应该至少在逻辑上正常工作..如果可能的话尝试发送整个代码,我会为你查找它......
猜你喜欢
  • 2012-09-29
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
  • 2014-01-06
  • 2018-10-19
  • 1970-01-01
相关资源
最近更新 更多