我有一个jquery函数,它通过调用php脚本构建动态html代码,使用
输出html $('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上调用的函数。已经正确调用了该函数,但自定义锚标记的值 - 餐馆没有显示警告。
$('ul.special-list').on('click', 'a.restaurantItem', function (event) {
event.preventDefault();
alert($(this).attr('address'));
}
警报显示未定义,即使我检查chrome中的元素时,标签上的元素餐馆也有值。
任何帮助都会很棒,对Jquery来说我是一个新手,所以任何帮助都会受到赞赏。
非常感谢
答案 0 :(得分:1)
类属性可能会像John B提到的那样影响它,因为类接受多个空格分隔的值。 class属性之后的空格可能看起来就像它已经完成声明类一样,但Chrome似乎将标记的其余部分解释为更多的类。
可能是jQuery没有正确处理这些属性,因为它们并非都是标准的。通常,非标准属性应写为data-address=''
,而不仅仅是address=''
。切换到该格式后,您可以使用data-address
或使用attr('data-address')
的较新jQuery版本访问data('address')
属性。
答案 1 :(得分:1)
嗯,这主要是因为在您的 HTML字符串中,属性名称是地址,并且您正在尝试访问属性地址。
将adddress='" + item.estAddr + "'
更改为address='" + item.estAddr + "'
。
另请考虑为类添加引号:class="restaurantItem"