jQuery после show () предполагает, что display: inline имеет значение: hidden.Зачем? - PullRequest
0 голосов
/ 14 июня 2010

В jQuery 1.4.2: скрытый фильтр не отфильтровывает скрытые элементы, но я сделал их видимыми, вызвав show ().Фильтр предполагает, что он все еще скрыт.

Это ошибка или я что-то упустил?Рассмотрим следующий код:

$("td.ms-authoringcontrols > span[id*='_ParallelApprovers']:hidden:first").css("display")
"none"
$("td.ms-authoringcontrols > span[id*='_ParallelApprovers']:hidden:first").show()
Object
$("td.ms-authoringcontrols > span[id*='_ParallelApprovers']:hidden:first").css("display")
"inline" // ?? Let me scratch my head...
$("td.ms-authoringcontrols > span[id*='_ParallelApprovers']:hidden:first").is(":hidden")
true //element with "display:inline", visible in browser, but yet it is hidden

Вместо «inline» вы ожидаете «none», потому что: был использован скрытый фильтр.

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

1 Ответ

2 голосов
/ 14 июня 2010

Ваш код будет правильным, если .show() произошло линейно.Однако .show() запускает анимацию, которая заканчивается отображаемым объектом.Если вы хотите выполнить код после его показа, используйте альтернативную форму с длиной анимации и обратным вызовом .show(100,function(){}).

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