Колдовство в Javascript манипулируя DOM? - PullRequest
0 голосов
/ 29 марта 2020

У меня есть 3 строки HiddenFor Razor на HTML, которые передадут значения в модель C#.

Затем у меня будет javascript с тремя Dropzones (js lib для перетаскивания ). На этом этапе будет три «события удаления», которые будут заполнять эти скрытые значения.

Для этого я протестировал 3 различных синтаксиса:

document.getElementById().value
document.querySelector().value
$('#Element').value

, но заметил кое-что странное: для первых двух hiddenfor для querySelector и Jquery метод работает нормально, однако для третьего будет работать только один document.getElementById (в противном случае значение будет отправлено как ноль). В то же время document.getElementByID не распознается, если я использую это более одного раза.

Так что, если я использую Jquery для двух из них и document.getElementById для последнего, это будет работать нормально.

Вопрос в том ... почему?

Единственное, что отличается тем, что третья строка имеет "," внутри.

Jquery не работает со специальными символами или чем-то в этом роде?

Мой код работает, но мне просто любопытно, что такое глючная функциональность.

Ответы [ 2 ]

1 голос
/ 29 марта 2020

document.querySelector и $() оба принимают css строку селектора для идентификации цели. В CSS, , разделяет селекторы.

Таким образом, $('#a,b') будет искать элемент с идентификатором "a" или a b, тогда как document.getElementById('a,b') будет получить элемент с идентификатором "a, b".

Чтобы смоделировать это поведение в jQuery, вам нужно написать $('*[id="a,b"]');

1 голос
/ 29 марта 2020

Вместо этого лучше использовать $('#Element').val().

$(*) возвращает jQuery collection, в котором много methods, но нет option, как value.

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