0

我有一个 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.ready 上调用的函数,该函数被正确调用,但自定义锚标记的值 - 餐厅未显示警报。

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

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

即使当我检查 chrome 中的元素时,该警报仍显示未定义,标签上的元素餐厅有一个值。

任何帮助都会很棒,我对 Jquery 很陌生,所以任何帮助都将不胜感激。

非常感谢

4

2 回答 2

1

class 属性可能会像 John B 提到的那样影响它,因为 class 接受多个以空格分隔的值。class 属性后面的空格在我们看来好像已经完成了类的声明,但 Chrome 似乎将标记的其余部分解释为更多的类。

可能是 jQuery 没有正确处理这些属性,因为它们并非都是标准的。通常,非标准属性应该写成data-address=''而不只是address=''. 切换到该格式后,您可以data-address使用attr('data-address')或在较新的 jQuery 版本中使用data('address').

于 2013-04-17T20:23:07.947 回答
1

好吧,这基本上是因为在您的HTML 字符串中,属性名称是adddress并且您正在尝试访问属性address
更改adddress='" + item.estAddr + "'address='" + item.estAddr + "'还可以考虑为class

添加引号:class="restaurantItem"

于 2013-04-17T20:24:04.507 回答