Jquery未识别自定义锚标记属性

时间:2013-04-17 20:13:18

标签: jquery html

我有一个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来说我是一个新手,所以任何帮助都会受到赞赏。

非常感谢

2 个答案:

答案 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"