按文本查找元素索引

时间:2014-04-06 12:28:19

标签: jquery

<div id='xlink'>mc</div>

JS

$('#next').click(function() {
var xlink = $('#xlink').html();

var links = [ 'qd', 'mc', 'vr', 'lm', 'ms', 'kl', 'yu', 'an' ];

foreach(links, element) {
     if (element.value==xlink){y = element.index};
         alert (y);

});

我需要什么:

links数组中的foreach元素,如果元素值等于xlink value,则y = index of that element。在这种情况下应该是1

3 个答案:

答案 0 :(得分:2)

获取要用作键的元素文本,并使用indexOf在数组中查找,或者使用jQuery的$.inArray查找更多的跨浏览器,它将返回索引

$('#next').on('click', function() {
    var links = [ 'qd', 'mc', 'vr', 'lm', 'ms', 'kl', 'yu', 'an' ];
    var key   = $.trim( $('#xlink').text() );
    var y     = $.inArray(key, links);

    alert(y);
});

FIDDLE

答案 1 :(得分:1)

您可以使用 links.foreach

遍历链接数组
  $('#next').click(function() {
    var xlink = $('#xlink').html();

    var links = [ 'qd', 'mc', 'vr', 'lm', 'ms', 'kl', 'yu', 'an' ];

    links.forEach(function(value,index) {
          if (value==xlink){
             y =index
             alert (y);
          }
       });
    });

小提琴:http://jsfiddle.net/v2334/

答案 2 :(得分:1)

不需要在eventListener

中声明此数组
var links = [ 'qd', 'mc', 'vr', 'lm', 'ms', 'kl', 'yu', 'an' ];
document.getElementById('next').addEventListener('click', function(){
  var i = links.indexOf(
     document.getElementById('xlink').innerText.replace(/^\s+|\s+$/g, '')
  );
  alert(i);
})

就像vanillaJS)

fiddle