代码之家  ›  专栏  ›  技术社区  ›  arturh

低调的Javascript:如果启用了Javascript,则删除链接

  •  1
  • arturh  · 技术社区  · 18 年前

    我正在使用 PopBox

    我尝试使用以下HTML代码:

    <a href="image.jpg">
         <img src="thumbnail.jpg" pbsrc="image.jpg" onclick="Pop(...);"/>
    </a>
    

    现在我需要使用javascript禁用a标记,否则我的弹出框将无法工作。

    6 回复  |  直到 18 年前
        1
  •  3
  •   Daniel Papasian    18 年前

    将onclick事件放在链接本身上,如果不希望执行默认行为(要遵循的链接),则从处理程序返回false

        2
  •  3
  •   Ivan Jeffrey Zhao    8 年前

    只需在a标签上单击一下:

    <a href="image.jpg onclick="Pop()"; return false;"><img ...></a>
    

    false 在函数末尾(此处 Pop )或者像上面的例子中那样内联。这可以防止用户被服务器重定向到链接 <a> 中国的违约行为。

        3
  •  1
  •   Paul Dixon    18 年前

    您可以给所有的回退锚定标记指定一个特定的类名,如“simple”

    prototype ,您可以使用CSS选择器使用该类获取所有标记的数组,例如。

    var anchors=$$('a.simple')
    

    现在,您可以迭代该数组并清除href属性,或者安装onclick处理程序来覆盖正常行为,等等。。。

        4
  •  1
  •   Igor Zinov'yev    16 年前

    在我看来,我能提出最好的解决办法吗?这是使用jQuery1.4+。

    <div id="photo-container">
        <a href="image1.jpg">
            <img class="popup-image" src="thumbnail1.jpg" pbsrc="image1.jpg" />
        </a>
        <a href="image2.jpg">
            <img class="popup-image" src="thumbnail2.jpg" pbsrc="image2.jpg" />
        </a>
        <a href="image3.jpg">
            <img class="popup-image" src="thumbnail3.jpg" pbsrc="image3.jpg"/>
        </a>
    </div>
    

    然后,通过以下方式创建单个事件处理程序:

    <script type="text/javascript">
    $(document).ready(function(){
        var container = $('#photo-container');
    
        // let's bind our event handler
        container.bind('click', function(event){
            // thus we find (if any) the image the user has clicked on
            var target = $(event.target).closest('img.popup-image');
    
            // If the user has not hit any image, we do not handle the click
            if (!target.length) return;
    
            event.preventDefault(); // instead of return false;
    
            // And here you can do what you want to your image
            // which you can get from target
            Pop(target.get(0));
        });
    });
    </script>
    
        5
  •  0
  •   system PAUSE    17 年前

    这个 href 属性不是锚定所必需的( <a> 标签),所以摆脱它。。。

       <a id="apic001" href="pic001.png"><img src="tn_pic001.png"></a>
    
       <script type="text/javascript">
          document.getElementById("apic001").removeAttribute("href");
       </script>
    

    此方法将避免对的库争用 onclick .

    在IE6/FF3/Chrome中测试。附带好处:您可以使用id作为URI片段,直接链接到包含该缩略图的页面部分: http://whatever/gallery.html #apic001

    name="apic001" 属性设置为标记中的锚标记('name'和'id'值必须相同)。

    使用jQuery、dojo、Prototype等,您应该能够在多个类似的锚上执行removeAttribute,而不需要id。

        6
  •  0
  •   drostie drostie    17 年前

    <a href="image.jpg" onclick="return false;">
        <img src="thumbnail.jpg" pbsrc="image.jpg" onclick="Pop(...);">
    </a>
    

    如果有人禁用了Javascript,那么他们的浏览器会忽略这两个元素中的onclick语句并跟随链接;如果他们启用了Javascript,那么他们的浏览器将遵循两条OnClick语句——第一条语句告诉他们不要遵循 <a>