Estou usando o plug-in de areia movediça jQuery. Preciso obter o ID de dados do item clicado e passá-lo para um serviço da web. Como obtenho o atributo de identificação de dados? Estou usando o .on()
método para reativar o evento click para itens classificados.
$("#list li").on('click', function() {
// ret = DetailsView.GetProject($(this).attr("#data-id"), OnComplete, OnTimeOut, OnError);
alert($(this).attr("#data-id"));
});
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<ul id="list" class="grid">
<li data-id="id-40" class="win">
<a id="ctl00_cphBody_ListView1_ctrl0_SelectButton" class="project" href="#">
<img src="themes/clean/images/win.jpg" class="project-image" alt="get data-id" />
</a>
</li>
</ul>
javascript
jquery
custom-data-attribute
Bruce Adams
fonte
fonte
on()
método comolive()
agora está obsoleto, e essa pergunta recebe muitos visitantes.Respostas:
Para obter o conteúdo do atributo
data-id
(como em<a data-id="123">link</a>
), você deve usarou
.data()
(se você usar o jQuery mais recente> = 1.4.3)e a parte depois
data-
deve estar em minúscula, por exemplodata-idNum
, não funcionará, masdata-idnum
funcionará.fonte
attr()
porque o jQuery estava removendo zeros à esquerda dos códigos postaisdata()
, o TFM diz "A partir do jQuery 1.4.3, os atributos de dados HTML 5 serão automaticamente puxados para o objeto de dados do jQuery ... Todas as tentativas são feitas para converter a string para um valor JavaScript (isso inclui booleanos, números, objetos, matrizes e nulos). Um valor só é convertido em um número se isso não alterar a representação do valor. Por exemplo, "1E02" e "100.000" são equivalentes como números (valor numérico 100), mas convertê-los alteraria sua representação para que sejam deixados como seqüências de caracteres. "$(this).data().id //returns 123
Se quisermos recuperar ou atualizar esses atributos usando o JavaScript nativo existente, podemos fazê-lo usando os métodos getAttribute e setAttribute, como mostrado abaixo:
Através do JavaScript
Através do jQuery
Leia esta documentação
fonte
Nota importante. Lembre-se de que, se você ajustar o
data-
atributo dinamicamente via JavaScript, NÃO será refletido nadata()
função jQuery. Você também deve ajustá-lo viadata()
função.js:
fonte
Se você não está preocupado com navegadores IE antigos, também pode usar a API do conjunto de dados HTML5
HTML
JS
Demonstração: http://html5demos.com/dataset
Lista completa de suporte do navegador: http://caniuse.com/#feat=dataset
fonte
Surpreendido, ninguém mencionou:
Aqui está o exemplo de trabalho: https://jsfiddle.net/ed5axgvk/1/
fonte
HTML
JS
ou
Funciona para mim!
fonte
Eu uso $ .data - http://api.jquery.com/jquery.data/
fonte
funciona para mim!
fonte
Acessar atributos de dados por si só
id
é um pouco fácil para mim.$("#Id").data("attribute");
fonte
Este trecho de código retornará o valor dos atributos dos dados, por exemplo: id-data, data-hora, nome-dados etc., mostrei a id
js:
// obtém o valor do ID de dados -> a1
// isso mudará o ID de dados -> a2
// obtém o valor do ID de dados -> a2
fonte
usando jQuery:
fonte
Para aqueles que desejam remover e reativar dinamicamente a dica de ferramenta, você pode usar os métodos
dispose
eenable
. Consulte https://getbootstrap.com/docs/4.0/components/tooltips/#tooltipdisposefonte
Eu tenho um palmo. Eu quero pegar o valor do atributo data-txt-lang, que é usado definido.
fonte
O problema é que você não está especificando a opção ou a opção selecionada de lista suspensa ou lista. Aqui está um exemplo de lista suspensa, estou assumindo um registro de dados de atributo de dados.
fonte