Estou tendo dificuldades para descobrir o DOMElement de um seletor de jquery. Código de amostra:
<input type="checkbox" id="bob" />
var checkbox = $("#bob").click(function() { //some code } )
e em outro pedaço de código, estou tentando determinar o valor marcado da caixa de seleção.
if ( checkbox.eq(0).SomeMethodToGetARealDomElement().checked )
//do something.
E por favor, eu não quero fazer:
if ( checkbox.eq(0).is(":checked"))
//do something
Isso me impressiona na caixa de seleção, mas outras vezes eu precisava do verdadeiro DOMElement.
javascript
jquery
dom
BillRob
fonte
fonte
applyBindings
espera um nó DOM, não um seletor de jQuery. Esta pergunta (e suas respostas) são exatamente o que é necessário.Respostas:
Você pode acessar o elemento DOM bruto com:
ou mais simplesmente:
Na verdade, não há muito o que você precisa disso (na minha experiência). Veja o exemplo da sua caixa de seleção:
é mais "jquery'ish" e (imho) mais conciso. E se você quisesse numerá-los?
Alguns desses recursos também ajudam a mascarar as diferenças nos navegadores. Alguns atributos podem ser diferentes. O exemplo clássico é de chamadas AJAX. Para fazer isso corretamente, o Javascript bruto possui cerca de 7 casos de fallback para
XmlHttpRequest
.fonte
$('a').get(0).nodeType==1
no Firebug nesta página, ele avalia como verdadeiro ou falha?$('<input type=checkbox>').appendTo('body').get(0).checked
Edit: parece que eu estava errado em supor que você não poderia obter o elemento. Como outras pessoas postaram aqui, você pode obtê-lo com:
Eu verifiquei que isso realmente retorna o elemento DOM correspondente.
fonte
Eu precisava pegar o elemento como uma string.
O que lhe dará algo como:
... como uma string em vez de um elemento DOM.
fonte
Se você precisar interagir diretamente com o elemento DOM, por que não usar apenas
document.getElementById
uma vez, se estiver tentando interagir com um elemento específico, provavelmente conhecerá o ID, pois pressupõe que o nome da classe esteja em apenas um elemento ou em alguma outra opção tende a seja arriscado.Porém, costumo concordar com os outros que, na maioria dos casos, você deve aprender a fazer o que precisa usando o que o jQuery oferece, pois é muito flexível.
ATUALIZAÇÃO: Com base em um comentário: Aqui está uma postagem com uma boa explicação: http://www.mail-archive.com/[email protected]/msg04461.html
Isso retornará o valor se estiver marcado ou 0 se não estiver.
$(this).val()
está apenas chegando ao dom e obtendo o atributo "valor" do elemento, independentemente de ter sido verificado ou não.fonte