2014-09-25 40 views
0

以調節jQuery的東西IE7,I read here這是最好的<HEAD>使用此:IF條件爲IE7用戶啓用腳本屬性(jQuery)?

<!--[if IE 7]>   <html class="ie7"> <![endif]--> 

現在,出了下面的代碼中,

我想transition: "elastic",在那裏只有當它的IE7:

$(document).ready(function() { 
    $(".cbox").click(function(e) { 
     e.preventDefault(); 
     $.colorbox({ 
      transition: "elastic", 
      overlayClose: false, 
      opacity: 0.8, 
     }); 
     return false 
    }) 
}); 

所以,我試圖做這樣的事情:

$(document).ready(function() { 
    $(".cbox").click(function(e) { 
     e.preventDefault(); 
     $.colorbox({ 
      if ($('html').hasClass('ie7') {transition: "elastic",} 
      overlayClose: false, 
      opacity: 0.8, 
     }); 
     return false 
    }) 
}); 

但是這不是我做這個的方法我猜...應該怎麼做?

回答

2

可以使用ternary operator動態設置過渡

transition: $("html").hasClass("ie7") ? "elastic":"none", 

注意根據文檔的默認值是elastic所以真的不需要設置一個過渡可言,除非你想不IE7瀏覽器有其他一些轉換類型。

+0

+1,我忘了關於三元:)雖然一個注意 - 它假定'「」'是默認值,而不是它根本沒有被指定 – 2014-09-25 12:39:06

+0

是不確定實際的默認值轉換是如此將其留爲空白,將其編輯爲'none' – 2014-09-25 12:39:50

+0

謝謝!這也很好。彈性只是一個簡單的例子:) – rockyraw 2014-09-25 12:52:20

2

如果html元素肯定有它那類,正確的方法來組織你的選擇爲colorbox會是這樣的:

$(document).ready(function() { 
    $(".cbox").click(function(e) { 
     e.preventDefault(); 
     var opt = { 
      overlayClose: false, 
      opacity: 0.8 
     }; 
     if ($('html').hasClass('ie7'))   
      opt.transition = 'elastic'; 
     $.colorbox(opt); 
     return false 
    }); 
}); 
+0

我看到Dreamweaver的語法錯誤,也許缺少某些東西? – rockyraw 2014-09-25 12:36:32

+0

對不起,錯過了一個括號。修正了它(並添加了大多數瀏覽器忽略的缺失分號) – 2014-09-25 12:37:25

+0

謝謝,它現在正在工作:) – rockyraw 2014-09-25 12:51:15

0

非常直截了當的答案,只是仔細閱讀本鏈接: jQuery.browser

jQuery.browser屬性在jQuery 1.9中被刪除,只能通過jQuery.migrate插件使用。

當你有jQuery 1.9或更早的版本時,最好的做法是你應該使用這種方法來進行特定的瀏覽器檢測。

+2

請注意,[jQuery.browser](http://api.jquery.com/jquery.browser/)已被棄用,然後在jQuery 1.9中刪除 – 2014-09-25 12:34:21

+1

@Pro ..瀏覽器檢測是_never_最佳實踐... – Teemu 2014-09-25 12:35:25

+0

@James Thorpe:同意!但通過jQuery.migrate插件可以使用此功能。 – 2014-09-25 12:35:58