使用javascrip禁用lightbox

Disable lightbox with javascript(使用javascrip禁用lightbox)
本文介绍了使用javascrip禁用lightbox的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个图像,当被点击时,将在lightbox中打开(来自http://lokeshdhakar.com/projects/lightbox2/的脚本),我想要做的是禁止在按钮切换到关闭时发生这种情况。(因此,单击图像不起任何作用。)

我曾尝试使用.off和.un绑定来禁用lightbox,但它们都不适用于我。 我也按照建议跟踪了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>
...

和Java脚本

<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>

如有任何帮助,我们将不胜感激。

推荐答案

您需要禁用lightbox(通过移除其查找的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];
});
禁用lightbox的另一个选项是删除"data-lightbox"属性,并将其临时保存为"data-oldlightbox"属性。

我觉得这个库应该使用一个类来标识哪些元素符合LightBox的条件。这对用户来说很重要,而不仅仅是对库,而且应该在语义上进行标记。数据属性不适用于CSS挂钩。

这篇关于使用javascrip禁用lightbox的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

js文件上传前的预览和删除实例代码,具体如下: !DOCTYPE htmlhtml lang="en" head meta charset="UTF-8" / meta http-equiv="X-UA-Compatible" content="IE=edge" / meta name="viewport" content="width=device-width, initial-scale=1.0" / title文件上传预览和删除/title style #img-box{display: flex;
element el-tree树结构刷新后保留展开状态解决方法 我们在使用element的el-tree组件的时候,当我们给树结构重新赋值后,树节点就全部自动合上了。所以我们要记录展开状态,方法如下 html代码如下: el-tree ref="tree" :data="treeList" :highlight-current="true" :
本文给大家介绍Javascript js中实现和PHP一样的时间戳格式化函数的方法,具有一定的参考借鉴价值,需要的朋友可以参考下,我们知道在php中有一个date()函数,可以方便的把时间戳格式化为时间字符串。可是在js中,我们要想实现这种效果,要写好
需求是模板字符串中不允许出现script 标签、不允许有javascript: 和 .js 文件引用,主要方法如下: clearScriptTag (str) { const reg = /script[^]*([\S\s]*?)\/script/gim; // 清除标签内 相关 xss 安全代码 const reg1 = /javascript:/gim; const reg2 = / *.js/gim; if (reg.test(str)) { str
javascript中Replace全部替换字符用法实例代码,替换1次和多次,主要是正则表达式 var r= "1\n2\n3\n";//将字母\n替换成分号alert(r.replace("\n",";"));//结果:1;2\n3\n 只替换了第一个var r= "1\n2\n3\n";//将字母\n替换成分号alert(r.replace(/\n/g, ";"));//结果:1;2;3; replac
js输出当前日期和时间的实例代码,具体实例代码如下,有兴趣的朋友可以尝试运行下。 !doctype htmlhtml lang="en" head meta charset="UTF-8" title获取当前时间/title /head body script type="text/javascript" /** *获取当前时间 *format=1精确到天 *format=2精确到秒 */ function