2010-11-12 70 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。