2010-11-12 71 views
2

我有一個腳本,它複製圖像的ALT文本中的文本並製作一個標題框並輸入文本。jQuery if object is present

var alt = $("#hoejre p span img").attr("alt"); 
$('#hoejre p span img').after('<span></span>'); 
$('#hoejre p span span').html('<strong>' + alt.replace('-', '</strong> <em>') + '</em>'); 

這很好,當有一個圖像。但是當沒有任何圖像時,腳本在IE7中失敗。

如何使用IF語句包裝VAR。

回答

3

爲什麼調用一個方法,當你只能看長度屬性?

if ($imgs.length) { 
    ... /* one or more images exist */ 
} 
+0

剛剛發現這個關於性能的測試頁面:http://jsperf.com/size-vs-length – 2010-11-16 14:29:05

1

您可以檢查多少個對象jQuery選擇收益與 .size()

檢查fcalderan的answer,這表明使用.length屬性。
它有相同的結果,但可能更快。

例如,可以執行以下操作:

var $imgs = $("#hoejre p span img"); 
if($imgs.size() > 0) { 
    var alt = $imgs.attr("alt"); 
    $('<span></span>').html('<strong>' + alt.replace('-', '</strong> <em>') + '</em>') 
         .insertAfter($imgs); 
} 
1

尺寸()方法:

if ($("#hoejre p span img").size() > 0) 
{ 
    var alt = $("#hoejre p span img").attr("alt"); 
    $('#hoejre p span img').after('<span></span>'); 
    $('#hoejre p span span').html('<strong>' + alt.replace('-', '</strong> <em>') + '</em>'); 
} 
1

jQuery選擇返回的數組。

您可以檢查它是否包含具有本機JS Array.length屬性的任何元素。根據您的if確定長度是否大於0。