Моя функция JQuery Существуют: имеет ли это смысл или нет? - PullRequest
1 голос
/ 27 декабря 2010

Я немного запутался последние пару дней.Я использую свои селекторы JQUERY всякий раз, когда мне нравится ... но я не проверял, существует ли селектор или нет, вместо этого я использовал функцию .each.

  var exist = function(obj){
    var returnObject ={};
    for(var key in obj){
      if(obj[key].length){
        returnObject[key] = obj[key];
      }else {
        return false;
      }
    }
    return returnObject;
  }
  //define all your selectors that would be needed for core functionality.
  var activeSelectors = exist({
    selList : $('div.selectorone'),
    selTag : $('a#tagtwo'),
    selFloat : $(div.float) /*etc etc*/

  }) 

  if (activeSelectors) {
    console.log('all my core selectors are here!');
     /* do Stuff*/
  }

Я знаю, это выглядит немного, особенноесли вам нужен только один селектор, но я не могу придумать лучшего способа (за исключением слабого оператора if в каждом селекторе).Я видел людей, использующих

$('div#mySelector').each(function(){ /* do stuff*/});

, но я не согласен, что это приятно.Обратите внимание, что #mySelector (потому что это идентификатор) разрешен только один раз.

Мне бы очень понравилась обратная связь.Пожалуйста, обратите внимание на производительность и хорошее программирование.

для получения дополнительной информации, пожалуйста, прокомментируйте ниже или свяжитесь со мной!

1 Ответ

1 голос
/ 27 декабря 2010

Если бы я действительно хотел избежать использования простого оператора if, то я бы, вероятно, просто пошел с простой функцией, подобной этой:

var exists = function()
{
    for (var i in arguments)
    {
        if ($(arguments[i]).length == 0)
        {
            return false;
        }
    }

    return true;
}

, и вызвал бы ее так:

var list = $('div.selectorone');
var tag = $('a#tagtwo');
var float = $('div.float');
if (exists(list, tag, float))
{
    // Do some stuff.
}

Или:

if (exists('div.selectorone', 'a#tagtwo', 'div.float'))
{
    // Do some stuff.
}

Я действительно думаю, что вы чрезмерно разбираетесь в проблеме.Все, что вам действительно нужно сделать, это проверить свойство length для каждого из выбранных вами вариантов (то есть переменных list, tag, float).

Кроме того, производительностьполная не проблема здесь;Способ проверки, действительно ли существуют элементы, повлияет на удобство работы вашего сайта?Как сказал Дональд Кнут:

Мы должны забыть о малой эффективности, скажем, в 97% случаев: преждевременная оптимизация - корень всего зла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...