0

私は、htmlが出力されるphpスクリプトを呼び出すことから動的htmlコードを構築しているjquery関数を持っています

 $('ul.special-list').append("<li><a href='#' class=restaurantItem  restaurant= '" + item.estName + "' adddress='" + item.estAddr + "'><img src= " + item.img_link + 
            " width='60' height='60' alt='" + item.estName + "'><div class='img-det'><strong class='title'> " + item.title + " </strong><p> " + item.desc_short +
            " <br>Expires: " + item.expiry_date + " </p><em class='price'>" + item.price + "</em></div></a><a href='dealDetail.html?id=" + item.id +
            "' class='det-link'>Detail</a>");

次に、関数が呼び出される関数を doument.ready で正しく呼び出しますが、カスタム アンカー タグの値 - レストランはアラートで表示されません。

$('ul.special-list').on('click', 'a.restaurantItem', function (event) {

    event.preventDefault();
    alert($(this).attr('address'));
 } 

クロムの要素を検査すると、タグの要素レストランに値がありますが、アラートは未定義と表示されます。

私はJqueryにまったく慣れていないので、どんな助けも大歓迎です。

どうもありがとう

4

2 に答える 2

1

クラスはスペースで区切られた複数の値を受け入れるため、ジョン B が述べたようにクラス属性が影響している可能性があります。class 属性の後のスペースは、クラスの宣言が完了したように見えるかもしれませんが、Chrome はタグの残りの部分を追加のクラスとして解釈するようです。

これらの属性はすべて標準ではないため、jQuery がこれらの属性を適切に処理していない可能性があります。通常、非標準の属性はdata-address=''、単にaddress=''. その形式に切り替えると、 を使用して、または新しい jQuery バージョンでdata-addressを使用して属性にアクセスできます。attr('data-address')data('address')

于 2013-04-17T20:23:07.947 に答える