Я, вероятно, на 7 или 8 баллов по jQuery (по шкале 1 -10 ), поэтому я не уверен, что это имеет смысл, но я хотел бы знать, знает ли кто-нибудь о функции jQuery или, возможно, плагине, который позволяет ветвь jQuery для выполнения только в том случае, если заданное условие истинно. В противном случае, я хотел бы услышать, если кто-то думает, что концепция в чем-то ошибочна(РЕДАКТИРОВАТЬ и , как она ошибочна)
Хотя можно управлять присоединением различных событий с помощью обычного JavaScript синтаксис похож на этот:
var desiredElement = $('.parent') // find the parent element
.hover(overFunction,offFunction) // attach an event while I've got the parent in 'scope'
.find('.child-element'); // then find and return the child
if (booleanVar1) { // if one condition
desiredElement.click(clickFunction1); // attach one event
} else if (booleanVar2) { // or if a different condition
desiredElement.click(clickFunction2); // attach a different event
} else { // otherwise
desiredElement.click(clickFunction3); // attach a default event
}
$('.parent').find('.other-child') // (or $('.parent.other-child')
.css(SomePredefinedCssMapping)
.hide()
//...
Мне было интересно, есть ли способ сделать все это в jQuery или есть веская причина не делать этого... что-то вроде этого:
$('.parent') // find the parent element
.hover({overFunction,offFunction}) // attach an event while I've got the parent in 'scope'
.find('.child-element') // then find the child
.when(booleanVar1) // if one condition
.click(clickFunction1) // attach one event
.orWhen(booleanVar2) // or if a different condition
.click(clickFunction2) // attach a different event
.orElse() // otherwise
.click(clickFunction3) // attach a default event
.end()
.end()
.find('.other-child')
.css(SomePredefinedCssMapping)
//...
Примечание :Я думаю, что это синтаксически правильно, предполагая, что логические значения и функции определены надлежащим образом, но я почти уверен, что довольно ясно понял цель
предложенный jQuery кажется мне немного более аккуратным (?? )согласен/не согласен? -Итак, вот мои вопросы:
or
условия сделало бы это, точно так же, как Метод end()
возвращает предыдущий набор после вызова find()
)РЕДАКТИРОВАТЬ
Вопрос спрашивает, как это сделать с цепочкой методов или почему это было бы нецелесообразно (предпочтительными особенностями ).Хотя он не требует альтернатив, такие альтернативы могут быть необходимы для объяснения проблем с подходом цепочки jQuery. Кроме того, поскольку приведенный выше пример сразу оценивает логические значения, любое другое решение должно делать то же самое.