我需要代码来检查.account-select的所有实例的数据名称值。现在它只检查第一个.account-select元素而不是任何后续元素。
现在该功能是点击John Smith之类的元素,它会检查.account-select lis的数据名。如果数据名称相同,则不会使用John Smith数据创建新的li。 如果没有数据名称等于John Smith,那么它会添加一个与John Smith的li。
这是我为它制作的JS-Fiddle所以你可以看到我指的是:http://jsfiddle.net/rsxavior/vDCNy/22/ 任何帮助将不胜感激。
这是我现在正在使用的Jquery代码。
$('.account').click(function () {
var acc = $(this).data("name");
var sel = $('.account-select').data("name");
if (acc === sel) {
}
else {
$('.account-hidden-li').append('<li class="account-select" data-name="'+ $(this).data("name") +'">' + $(this).data("name") + '<a class="close bcn-close" data-dismiss="alert" href="#">×</a></li>');
}
});
HTML:
<ul>
<li><a class="account" data-name="All" href="#">All</a></li>
<li><a class="account" data-name="John Smith" href="#">John Smith</a></li>
</ul>
<ul class="account-hidden-li">
<ul>
答案 0 :(得分:3)
您可以使用.each()
对所有内容进行迭代:
var acc = $(this).data('name');
$('.account-select').each(function(){
var sel = $(this).data('name');
if (acc == sel){
}else{
// $(...).append(...)
}
});
或者您可以使用attribute selector:
$('.account-select[data-name="'+acc+'"]') // assuming no `"` in acc otherwise
// you're going to need to escape it
这意味着您还可以使用:not()
选择器来实现您的目标:
var acc = $(this).data('name');
$('.account-select:not([data-name="'+acc+'"])')
.append(...)
答案 1 :(得分:1)
如您所知,$('.account-select').data("name")
仅从第一个元素获取数据。您需要遍历每个.account-select
并获取其数据。
$('.account-select').each(function(i, v){
var sel = $(v).data('name');
if (acc === sel) {
// Do something if they match
}
else{
// Do something else if they don't
}
});