2010-11-12 3 views
2

У меня есть сценарий, который копирует текст из ALT-текста изображения и создает заголовок и вводит текст.jQuery, если объект присутствует

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.

Как я могу обернуть VAR предложением IF.

ответ

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.

Смежные вопросы