【问题标题】:Jquery/Jquery mobile - how to detect if a link clicked leads to an image or website?Jquery/Jquery mobile - 如何检测点击的链接是否指向图像或网站?
【发布时间】:2011-11-21 05:54:36
【问题描述】:

我正在尝试组合两个 JQM 插件,但无法清除冲突。


我有以下内容,点击后会激活Photoswipe 插件:

<a class="swipeMe" href="../IMG/samples/166.png" rel="external"><img src="...

在第二个splitview 插件中,带有 rel="external" 的点击链接会触发 JQM HttpCleanup 函数:

httpCleanup = function(){
    window.setTimeout( function() { removeActiveLinkClass( true ); }, 200 );
    };

这给了我一个“未定义 removeActiveLinkClass”错误。我遇到的另一个错误是在关闭 Photoswipe 时,萤火虫告诉我“$.mobile._handleHashChange 不是函数”

所以我假设我需要添加一个 if 子句:“如果单击的链接是图像/不是网页,则跳过 HTTPCleanup 并且不要执行 hashChange”。

如何在 Jquery 或 JqueryMobile 中执行此操作?

编辑:更多代码..

我认为这些是代码的相关部分

$(document).bind( "click", function(event) {

httpCleanup = function(){
    window.setTimeout( function() { removeActiveLinkClass( true ); }, 200 );
    };      

    var isExternal = useDefaultUrlHandling || ( $.mobile.path.isExternal( href ) && !isCrossDomainPageLoad );

    if( isExternal ) {           
   httpCleanup();
   //use default click handling
   return;
       }

【问题讨论】:

  • 能不能多显示一些代码,怎么调用清理方法?

标签: jquery jquery-mobile hyperlink


【解决方案1】:

试试这个:

$.ajax({
   type: 'GET',
   url: $("a.swipeMe").attr("href"),
   complete: function(resp){
        ct = resp.getResponseHeader('Content-Type');
        }
   });

如果ct=="image/png",你有一个PNG图像。

【讨论】:

  • 这不是矫枉过正,应该注意放置这段代码的位置,否则您将获取大量 url 只是为了查看它们的内容类型是否为图像。
  • 他只需要在点击图片后将其用作测试——所以它只在需要运行时运行。
  • true,但断章取意,如果这是在某些全局选择器上使用的,这将对最终用户的数据限制造成严重损害:),只是说它应该带有注释:)
  • 我不知道是否要使用 Ajax 调用来执行此操作。由于它是一个移动网站,因此数据限制很重要......我会在我的问题中添加更多代码,也许还有另一种解决方案。
  • 点击后不会加载链接的内容吗?因此 ajax() 调用不会加载任何无论如何都不会加载的内容,并且文件应该被缓存,因此不会发生重复下载。 ——只是说说而已。
【解决方案2】:

您可以在渲染它们时向锚标记添加一个类,并在您的清理函数中验证它是否具有该 css 类

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 2012-05-25
    • 2021-10-06
    • 2011-10-27
    相关资源
    最近更新 更多