如何在ID相同时获取data- *内容?

时间:2016-03-21 11:30:06

标签: javascript jquery html forms tags

我创建了2个data- *标签。数据类别和数据标记。在单击href标记时,我想将该数据类别和数据标记复制到表单输入。我的代码是:

<div class="multi-dropdown-list-1">
    <ul class="multi-dropdown-list">
        <li>
            <a href="#" class="ico-media" data-category="Accommodation" data-tag="Accommodation2" id="industry_url">
                Accommodation
                <i class="socialbakers-icons-before" data-icons-before="&#xe648;"></i>
            </a>
        </li>
        <li>
            <a href="#" class="ico-media" data-category="Airlines" data-tag="Airline2" id="industry_url">
                Airlines
                <i class="socialbakers-icons-before" data-icons-before="&#xe648;"></i>
            </a>
        </li>
     </ul>
</div>
<form accept-charset="UTF-8" action="Post" id="industry_form" name="industry_form" method="post" type="hidden">
  <input type="hidden" name="_token" value="{{ csrf_token() }}">     
  <input id="text_tag_input" type="text" name="tags" />
  <input id="text_tag_input2" type="text" name="tags2" />
</form>

和我的Javascript:

<script>
    $('.multi-dropdown-list-1 a').click(function() {
    var value = $('#industry_url').attr('data-category');
    var value2 = $('#industry_url').attr('data-tag');
    var input = $('#text_tag_input');
    var input2 = $('#text_tag_input2');
    input.val(value);
    input2.val(value2);
</script>

目前每当我点击任何一个href时,无论我点击哪个href,我都会获得顶部href的data-cat和data-tag。我如何获得唯一值取决于我点击哪一个?

(我知道ID是相同的,但我需要它们,因为列表是自动生成的)

4 个答案:

答案 0 :(得分:1)

ID必须是唯一的。你可以宁愿使用同一个类。

此外,您需要使用点击的元素上下文this将其与.data()而不是.attr()一起定位,以获取元素数据属性。

$('.multi-dropdown-list-1 a').click(function() {
 var value = $(this).data('category');
 var value2 = $(this).data('tag');
 var input = $('#text_tag_input');
 var input2 = $('#text_tag_input2');
 input.val(value);
 input2.val(value2);
});

答案 1 :(得分:0)

使用$(this)来定位点击的元素:

<script>
$('.multi-dropdown-list-1 a').click(function() {
var value = $(this).attr('data-category');
var value2 = $(this).attr('data-tag');
var input = $('#text_tag_input');
var input2 = $('#text_tag_input2');
input.val(value);
input2.val(value2);
</script>

答案 2 :(得分:0)

&#13;
&#13;
$('body').on('click', 'a#industry_url', function() {
  var value = $(this).attr('data-category');
  var value2 = $(this).attr('data-tag');
  var input = $('#text_tag_input');
  var input2 = $('#text_tag_input2');
  input.val(value);
  input2.val(value2);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="multi-dropdown-list-1">
    <ul class="multi-dropdown-list">
        <li>
            <a href="#" class="ico-media" data-category="Accommodation" data-tag="Accommodation2" id="industry_url">
                Accommodation
                <i class="socialbakers-icons-before" data-icons-before="&#xe648;"></i>
            </a>
        </li>
        <li>
            <a href="#" class="ico-media" data-category="Airlines" data-tag="Airline2" id="industry_url">
                Airlines
                <i class="socialbakers-icons-before" data-icons-before="&#xe648;"></i>
            </a>
        </li>
     </ul>
</div>
<form accept-charset="UTF-8" action="Post" id="industry_form" name="industry_form" method="post" type="hidden">
  <input type="hidden" name="_token" value="{{ csrf_token() }}">     
  <input id="text_tag_input" type="text" name="tags" />
  <input id="text_tag_input2" type="text" name="tags2" />
</form>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

你在这里错误地使用了IDID must be unique

但是,在这种情况下,您并不需要严格执行其他选择器。您可以引用直接单击的元素,因为它作为参数传递给单击处理程序;

$('.multi-dropdown-list-1 a').click(function (e) {
  var $target = e.currentTarget;
  var category = $target.data('category');
  var tag = $target.data('tag');
  ...
});

注意jQuery还提供了一个简写函数data(),用于访问元素的数据属性。