JQuery, если объект присутствует - PullRequest
2 голосов
/ 12 ноября 2010

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

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.

Ответы [ 4 ]

3 голосов
/ 12 ноября 2010

зачем вызывать метод, когда вы можете просто посмотреть на свойство length?

if ($imgs.length) {
  ... /* one or more images exist */
}
1 голос
/ 12 ноября 2010

Метод size ():

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 голос
/ 12 ноября 2010

Селекторы jQuery возвращают массив.

Вы можете проверить, содержит ли он какие-либо элементы со встроенным свойством JS Array.length.Для if используйте длину> 0.

1 голос
/ 12 ноября 2010

Вы можете проверить, сколько объектов возвращает селектор jQuery с помощью .size()

Проверить ответ Фальдерана , что предполагает использование свойства .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 );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...