Select class 的元素,如果它具有此特定数据属性 (jQuery)
Select an element by class IF it has this particular data-attribute (jQuery)
考虑这个 HTML:
<button class="btn-edit" data-user="joe"> Need to select this. </button>
<button class="btn-cancel" data-user="joe"> Not this. </button>
<button class="btn-edit" data-user="sally"> Not this. </button>
<button class="btn-cancel" data-user="sally"> Not this. </button>
我想要 select 第一个按钮 - Joe 的编辑按钮。基本上在所有编辑按钮中,我想要 select 与我拥有的数据属性相匹配的按钮。
我走到这一步:
$('[data-user="joe"]')
但是 select 了顶部的两个按钮。
加分:"joe" 作为变量出现。所以我正在处理:
var userNameFromForm = "joe";
$('[data-user="'+userNameFromForm+'"]')
但这很疯狂,所以我很乐意回答原始问题,或者如果我走错了方向,可以提出如何最好地重构它的建议。
添加 class select 或 .btn-edit
,然后使用 :first
selector, or the .first()
method 到 select [=21= 中的第一个元素] 对象:
$('[data-user="joe"].btn-edit:first');
// or
$('[data-user="joe"].btn-edit').first();
同样适用于带有变量的版本:
var userNameFromForm = "joe";
$('[data-user="' + userNameFromForm + '"].btn-edit:first');
// or
$('[data-user="' + userNameFromForm + '"].btn-edit').first();
正如 Josh Crozier 提到的,您可以尝试使用 :first
选择器,但我不建议您这样做,除非您确定按钮的顺序不会改变。我可能会建议使用更多选择器或为您的按钮添加 ID。
例如,您还可以定位 class 名称 btn-edit
,因为我可以看到它们在您的代码段中是独一无二的:
$('.btn-edit[data-user="joe"]')
但最安全的方法是使用唯一名称作为 ID 属性:
<button id="edit" class="btn-edit" data-user="joe"></button>
$('#edit')
var userNameFromForm = "joe";
//$('.btn-edit[data-user=' + userNameFromForm + ']') element that you want
$('.btn-edit[data-user=' + userNameFromForm + ']').css('color', 'red')
考虑这个 HTML:
<button class="btn-edit" data-user="joe"> Need to select this. </button>
<button class="btn-cancel" data-user="joe"> Not this. </button>
<button class="btn-edit" data-user="sally"> Not this. </button>
<button class="btn-cancel" data-user="sally"> Not this. </button>
我想要 select 第一个按钮 - Joe 的编辑按钮。基本上在所有编辑按钮中,我想要 select 与我拥有的数据属性相匹配的按钮。
我走到这一步:
$('[data-user="joe"]')
但是 select 了顶部的两个按钮。
加分:"joe" 作为变量出现。所以我正在处理:
var userNameFromForm = "joe";
$('[data-user="'+userNameFromForm+'"]')
但这很疯狂,所以我很乐意回答原始问题,或者如果我走错了方向,可以提出如何最好地重构它的建议。
添加 class select 或 .btn-edit
,然后使用 :first
selector, or the .first()
method 到 select [=21= 中的第一个元素] 对象:
$('[data-user="joe"].btn-edit:first');
// or
$('[data-user="joe"].btn-edit').first();
同样适用于带有变量的版本:
var userNameFromForm = "joe";
$('[data-user="' + userNameFromForm + '"].btn-edit:first');
// or
$('[data-user="' + userNameFromForm + '"].btn-edit').first();
正如 Josh Crozier 提到的,您可以尝试使用 :first
选择器,但我不建议您这样做,除非您确定按钮的顺序不会改变。我可能会建议使用更多选择器或为您的按钮添加 ID。
例如,您还可以定位 class 名称 btn-edit
,因为我可以看到它们在您的代码段中是独一无二的:
$('.btn-edit[data-user="joe"]')
但最安全的方法是使用唯一名称作为 ID 属性:
<button id="edit" class="btn-edit" data-user="joe"></button>
$('#edit')
var userNameFromForm = "joe";
//$('.btn-edit[data-user=' + userNameFromForm + ']') element that you want
$('.btn-edit[data-user=' + userNameFromForm + ']').css('color', 'red')