使用 JavaScript 禁用灯箱

2024-06-24

我有一张图像,单击时会在灯箱中打开(脚本来自http://lokeshdhakar.com/projects/lightbox2/ http://lokeshdhakar.com/projects/lightbox2/),我想要做的是当按钮切换到关闭状态时禁用这种情况。 (因此单击图像不会执行任何操作。)

我尝试按照网站上的其他一些答案使用 .off 和 .unbind 来禁用灯箱,但它们都不适合我。 我也关注过如何使用 jQuery 动态启用/禁用链接? https://stackoverflow.com/questions/3788946/how-do-i-dynamically-enable-disable-links-with-jquery按照建议但没有运气。

下面是 HTML。

<div style="margin-left:10%;padding:1px 16px;">
  <section id="four_columns">
    <article class="img-item">
      <figure>
        <a href="img/livingroom.jpg" data-lightbox="livingroom"><img id="img_window1" src="img/livingroom.jpg" width="200" height="120"></a>
        <figcaption>
          <strong>Living Room 
            <div class="onoffswitch">
              <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="window1" value="window1" checked>
                <label class="onoffswitch-label" for="window1">
                  <span class="onoffswitch-inner"></span>
                  <span class="onoffswitch-switch"></span>
                </label>
            </div>
          </strong>
        </figcaption>
      </figure>
    </article>
...

和 JavaScript

<script type="text/javascript">
  $(document).ready(function() {
  var full_opacity = 1;
  var faded_opacity = 0.3;
  var fade_speed = 'fast';              
  var objid;

  $('input[name="onoffswitch"]').each(function() {
    objid = "#img_" + $(this).val();

    if($(this).prop('checked')) {
        $(objid).css('opacity', full_opacity);
    }
    else {
        $(objid).css('opacity', faded_opacity);
    }
});

$('input[name="onoffswitch"]').change(function() {
    var objid = "#img_" + $(this).val();
    console.log($(this).prop('checked'));
    if($(this).prop('checked')) {
        $(objid).fadeTo(fade_speed, full_opacity);
        }
        else {
            $(objid).fadeTo(fade_speed, faded_opacity);
            $(objid).parent().unbind('click'); /* Here is where I want to implement the code. */
        }
    });
});
</script>

任何帮助,将不胜感激。


您需要禁用两个灯箱(通过删除data-lightbox它查找的属性)以及底层超链接的默认功能。

$lightboxes = $(".myImageLinks");    

// save the old data attributes in an array, then remove them
var lightboxData = $lightboxes.map(function() {
    return $(this).data("lightbox");
}).get();
$(objid).parent().removeAttr("data-lightbox");

// prevent the browser from traveling to the link target
var preventer = function(e) { 
    e.preventDefault();
});
$(objid).parent().click(preventer);

然后使用以下命令重新启用默认单击功能:

$(objid).parent().unbind('click', preventer);
$lightboxes.attr("data-lightbox", function(i, old) {
    return lightboxData[i];
});

禁用灯箱的另一个选项是删除“data-lightbox”属性并将其临时保存为“data-oldlightbox”属性。

我觉得图书馆应该使用一个类来识别哪些元素适合灯箱。这对用户(而不仅仅是库)很重要,并且应该进行语义标记。数据属性不适用于 CSS 挂钩。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JavaScript 禁用灯箱 的相关文章

  • Chrome 扩展弹出窗口的非阻塞警报

    我正在制作一个 chrome 扩展 为此我需要在弹出窗口中添加一些非阻塞警报 定期警报会暂停 javascript 代码执行 而客户端并不希望这样 我尝试使用 jQuery 的 UI 对话框 但是当我单击 确定 按钮关闭它时 弹出窗口失去焦
  • 字符串和数组泛型方法将来将被弃用

    在下面的链接 MDN 站点 中 它显示 字符串泛型是非标准的 已弃用 将来可能会被删除 请注意 如果不使用下面提供的填充程序 则不能跨浏览器依赖它们 他们所指的方法是否是他们在此声明下方提供的垫片中列出的方法 这是我见过的唯一对 字符串泛型
  • 如何将 DataTable 数据传递到 Bootstrap 模式

    我有一个带有此变量的 jQuery 数据表 columns data id data date data type data name data user name data status data closing date data
  • WebSocket 已处于 CLOSING 或 CLOSED 状态。

    我尝试使用 Javascript PHP 和 Wamp 执行 WebSocket 但在发送时出现错误 WebSocket 已处于 CLOSING 或 CLOSED 状态 我已经使用了源代码here http sii rennes devel
  • 通过setRequestHeader授权

    我发现这段代码可以使用 setRequestheader 和 Ajax 进行身份验证 this xmlDoc setRequestHeader Authorization Basic Base64 encode User Password
  • Bind 与 curry* 的 JavaScript 用法?

    我试图理解之间的区别curry vs bind 实施bind is 1 Function prototype bind function 2 3 var fn this 4 args Array prototype slice call a
  • 阻止 Firefox 在刷新后恢复先前用户输入的状态

    我有一个带有多个复选框的页面 需要表示数据库中的状态 这些复选框是 AJAX 驱动的 因此当选中一个复选框时 就会发送一个请求来更新数据库中的状态 如果他们的视图已过时 则受影响 相关复选框的视图将更新 并通知用户 并且必须重试 当我刷新时
  • 如何像这样包裹div?

    假设您有一个具有固定高度和重量的 div 在图中是最里面的一个 并且您希望周围的 div 包含它 其外边距为例如1 厘米 你会怎么做 一种方法是使用inline block显示风格 div border 1px solid blue div
  • 通过 JavaScript 传输事件来调用 :hover 伪类

    这是场景 您有两张图像 它们彼此堆叠在一起 最高阶的 z 索引图像负责处理点击事件 想想 Google 的 Map API 并且是透明的 而下面的图像负责视觉表示 这是一个伪 HTML CSS 表示 div visual container
  • jQuery 事件在 mouseup 时停止

    我正在尝试制作一个非常简单的应用程序 当鼠标按钮按下时 用户可以使用选定的颜色绘制到表格中 当鼠标松开时事件停止 绘图效果很好 唯一的问题是释放鼠标时事件不会停止 我已经尝试过很多方法 但显然我做错了 还尝试了绑定和取消绑定事件 但也不起作
  • 使用 querySelectorAll 获取选定的选项

    我想知道是否可以在 Javascript 中获取当前选定的选项
  • 未捕获的语法错误:无法在“文档”上执行“querySelector”

  • 我可以在 javascript 中使用 php 吗?

    初学者的问题 我可以在 JavaScript 中使用 PHP 吗 例如在 jquery 中 triggers eq 1 post PHP 在服务器端执行 JavaScript 在客户端执行 但是你可以像这样打印 PHP 变量 trigger
  • 使用 jquery ui 选项卡更改 location.hash

    我一直在尝试找到一种方法将 window location hash 更改为当前选定的选项卡Jquery UI 选项卡 http docs jquery com UI Tabs 我试过了 tabs gt ul tabs tabs gt ul
  • 为什么动态安装的 vuejs 内容不是根 vue 实例的子组件?

    我加载一些包含自定义组件的 html 并将该内容挂载到父组件中的固定节点 不幸的是 我发现它们之间没有父子关系 因此动态插入的组件派发的事件无法被根vue接收 我创建了一把小提琴 任何帮助或建议都将受到赞赏 http jsfiddle ne
  • Webkit 浏览器在确定表格布局中的单元格宽度时不考虑填充:已修复

    我在申请时得到不同的结果table layout fixed到表格并在单元格上使用填充 IE 和 Firefox 似乎可以通过将单元格宽度和填充加在一起来正常工作 Chrome 和 Safari 仅使用单元格宽度 我看到该问题存在一个错误
  • 为什么 (false || null) 返回 null,而 (null || false) 返回 false?

    为什么false null返回与以下不同的结果null false 我可以安全地依靠吗return myVar false如果 myVar 是其中之一 则返回 falsenull or false but true否则 所有组合 false
  • 如何在 Google 地图 v3 中的每个标记上添加编号?

    我想问大家如何使用 JavaScript 在 Google 地图 v3 中的每个标记上动态添加数字 例如 第一个标记是 1 第二个标记是 2 等等 在这种情况下 我的位置数据如下 new google maps LatLng 1 3667
  • 无法使用带有 socket.io 的媒体源从媒体记录器跳转到流

    当首先加载视频观察客户端然后加载网络摄像头客户端时 以下代码可以正常工作 但是 如果顺序交换或以任何方式中断流 例如通过刷新任一客户端 则流将失败并且媒体源会将其就绪状态更改为关闭 我的假设是 在开始时接收的视频需要初始化标头才能启动 并且
  • 带骨干的递归函数jquery

    我在主干中有一个应用程序 我想在 Json 中找到一些记录并打印出来 我的 JSON 是这样的 id r1 hotel id 1 name Single level 1 id r1 1 hotel id 1 name Double leve

随机推荐