Как я могу использовать JQuery для получения всех узлов с атрибуты, равные значению?

Ответ jQuery был довольно полезен для меня. С небольшим заводом это соответствовало моим потребностям хорошо. Надеюсь, это кому-нибудь еще поможет.

function onReady ( callback ){
    var addListener = document.addEventListener || document.attachEvent,
        removeListener =  document.removeEventListener || document.detachEvent
        eventName = document.addEventListener ? "DOMContentLoaded" : "onreadystatechange"

    addListener.call(document, eventName, function(){
        removeListener( eventName, arguments.callee, false )
        callback()
    }, false )
}
9
задан uriDium 24 June 2009 в 20:32
поделиться

4 ответа

Используйте фильтр атрибутов, в частности фильтр attributeEquals :

$("node[name='x']");

Чтобы выбрать все другие узлы, используйте фильтр attributeNotEquals :

$("node[name!='x']");

Затем вы можете применить jQuery манипуляции для перемещения этих узлов в другое место.

Обратите внимание, что селекторы в стиле XPath устарели в версии 1.2 и были полностью удалены в jQuery 1.3.

Если вы можете повлиять на то, что сервер отправляет, вы можете захотеть переключиться на использование JSON вместо этого, вам может быть проще анализировать.

19
ответ дан 4 December 2019 в 07:48
поделиться
success: function(xml) {
   $(xml.find('node').each(function(){
    if($(this).attr('name')=='x') {
       //go to one table
    } else {
       //go to another table
    }

   }
}
7
ответ дан 4 December 2019 в 07:48
поделиться

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

РЕДАКТИРОВАТЬ: Мы, конечно, могли бы сделать этот код более компактным за счет использования LINQ и некоторых вспомогательных функций, но я думаю, что это легче понять в менее сложной форме. Это может быть тот случай, когда ремонтопригодность важнее элегантности.

Вот пример:

[Flags()]public enum CheckType
{
  Form = 1,       
  QueryString = 2,
  TempData = 4,
}

void PerformActions( CheckType c )
{
  // array of bits set in the parameter {c}
  bool[] actionMask = { false, false, false };
  // array of delegates to the corresponding actions we can invoke...
  Action availableActions = { DoSomething, DoSomethingElse, DoAnotherThing };

  // disassemble the flags into a array of booleans
  for( int i = 0; i < actionMask.Length; i++ )
    actionMask[i] = (c & (1 << i)) != 0;

  // for each set flag, dispatch the corresponding action method
  for( int actionIndex = 0; actionIndex < actionMask.Length; actionIndex++ )
  {
      if( actionMask[actionIndex])
          availableActions[actionIndex](); // invoke the corresponding action
  }
}

В качестве альтернативы, если порядок, в котором вы оцениваете, не имеет значения, вот более простое и ясное решение, которое также работает. Если порядок имеет значение,

1
ответ дан 4 December 2019 в 07:48
поделиться

Вы можете использовать xpath в jQuery для выбора узлов:

$ ("//node[@name='x'ght")

http://docs.jquery.com/DOM/Traversing/Selectors

1
ответ дан 4 December 2019 в 07:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: