在数据值字符串中动态添加连字符jQuery

时间:2016-06-27 06:59:53

标签: javascript jquery html

所以我有一个简单的UL页面,它应该在运行时通过AJAX调用和JSON响应填充。

$(".select-brands").append("<li data-value=" + manufacturerName + ">" + manufacturer + "</li>");

在此之后我使用该数据值属性以滚动到与用户在不同选择框中选择的元素同名的元素。因此,当他们选择Harley Davidson图片时,jQuery会查找带有

的元素
data-value="HARLEY-DAVIDSON"

然而,结果不是我所期望的,而不是那个数据值,而是我得到这样的元素

<li data-value="HARLEY" davidson="">HARLEY DAVIDSON</li>

如何制作它以便我可以根据此名称选择元素?可以通过li标签内的文本来完成吗?

// Get corresponding brand on list by custom data-value attribute //
var listBrand = $('li[data-value="'+ selectedBrand.toUpperCase() +'"]');
var parent    = $('#brands-select');
var index     = listBrand.index();

parent.animate({
        scrollTop: $('#brands-select li:nth-child('+ index +')').position().top - $('#brands-select li:first').position().top
}, 'slow');

这是我用来滚动到所选元素的代码。

1 个答案:

答案 0 :(得分:5)

$(".select-brands").append("<li data-value=" + manufacturerName + ">" + manufacturer + "</li>");

属性名称周围没有引号。你应该这样做:

$(".select-brands").append("<li data-value='" + manufacturerName + "'>" + manufacturer + "</li>");

带引号。

没有它们,它会被解析为两个独立的属性,如:<li data-value=HARLEY-DAVIDSON>,因为连字符会被忽略。