2016-06-28 19 views
1

コンテキスト:セットアップにはうまくいかないlazyloadスクリプトの回避策を試しています。IDなしのイメージで名前 "data-original"属性名を変更する方法

これは現実的ではありませんが、これは私が念頭に置いていることです。 タイトルセクションをクリックすると、セクションに含まれる画像のすべての属性を変更したい(画像が表示されます)。

data-originalからsrcです。

$('#s101').click(function(){ 

var a = $('#b01').next().find('img').attr("data-original"); 

// alert (a) // will give me the url of the attr. data-original: (http...) 

x = a.getAttribute("data-original"); 
a.setAttribute("src", x); 
a.removeAttribute("data-original"); 
          }); 

これは動作しません。ここで

は私だったです。手伝ってくれる?

+0

'A'が文字列ではなく、DOM要素、なぜあなたはそれに' getAttribute'と 'setAttribute'を呼び出しているです。 – Barmar

+0

古いバージョンのjQueryを使用しているかどうかはわかりませんが、属性を取得および設定するための正しい構文は、使用しているものと少し異なります。 '.attr(" attribute here ")'を使って属性を取得し、 '.attr(" attribute here "、" value here ")'を使って属性を設定します。 –

+0

@SgtAJ彼はjQueryとDOMの機能を混ぜています。 – Barmar

答えて

1

...、あなたはこのような何かをしたいと思いますあなたの "クリック" ハンドラの方法論と一緒に続いて、この

$('#b01').next().find('img').each(function(){ 
    $(this).attr("src", $(this).attr("data-original")).removeAttr("data-original"); 
}); 
+0

これはうまくいきません,,, – Sergelie

+0

$( '#b01')。next()。find( 'img' ).lengthをコンソールに表示します。あなたが間違った検索img条件を持っている可能性があります –

+0

これは私のコンソールログに適切な値を与えるので、それは未定義で面白いです。 :var a = $( '#b01')。next()。find( 'img')。attr( "data-original"); – Sergelie

1

を試してみてください

$("#btnChangeImage").click(function(){ 
    var a = $("#myImg"); 

    var x = a.attr("data-original"); 
    a.attr("src", x); 
    a.removeAttr("data-original"); 

});

基本的に、問題はあなたが要素ではなく属性に作用しようとしていて、その属性を持つと古いjQuery APIバージョンを使用しているようです。

は、ここでは簡単plunkを実証することです:https://plnkr.co/edit/3kZGz5kDLwaBDmGFzsWU?p=preview

+0

ありがとう、私は理解しようとしている – Sergelie

関連する問題