Как использовать объекты jQuery в качестве параметров для метода делегата - PullRequest
3 голосов
/ 21 сентября 2011

Несколько делегатов используются с делегатом, используя следующее:

$(contextElement).delegate('selector1, selector2' , 'eventName', function(){ //blabla });

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

Однако я не могу присоединиться к этому способу использования нескольких селекторов в методе делегата:

window.someControl = {
     contextElement = $('selector0'),
     DOMasProperty1 = $('selector1'),
     DOMasProperty2 = $('selector2')
}

someControl.contextElement.delegate(
'you magic answer for using DOMasProperty1 
and DOMasProperty2', 
'click', 
function(){ 

  //blabla 

});

Примечание: Мне известно, что строковое значениеселектор в отличие от его объекта jQuery может быть сохранен в объекте someControl.Однако я сохраняю объекты jQuery для повышения производительности кода, и простой вызов строковых значений снова и снова сделает этот способ работы не отличным от простого использования имени селектора с методом.

Мне нужен ответ, чтобы каким-то образом совместить использование делегата с сокращением поиска в DOM

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

jQuery-объекты имеют свойство .selector, которое будет ссылаться на ваш оригинальный селектор.

someControl.contextElement.delegate(
    window.someControl.DOMasProperty1.selector + ',' + 
    window.someControl.DOMasProperty2.selector,
    'click', 
    function(){ 

          //blabla 

    });

Обратите внимание, что это будет работать для:

DOMasProperty1 = $('selector1'),

... но, вероятно, нет, если вы включите методы обхода DOM, такие как:

DOMasProperty1 = $('selector1').parent(),
1 голос
/ 21 сентября 2011

Я не полностью ясно понимаю ваш вопрос, но я мог бы сделать что-то вроде этого:

window.someControl = {
    contextElement: $('selector0'),
    selectors: ['selector1', 'selector2']
}

someControl.contextElement.delegate(someControl.selectors.join(','), 'click', function(){ 
    // …
});

Обратите внимание, что синтаксис для создания объектов JavaScript выглядит следующим образом:

{
    key: value
}

Не как это:

{
    key = value
}
...