Jquery中的动态变量,选择ID与实际元素的值相同的元素

时间:2014-01-27 12:42:29

标签: jquery

如何访问具有ID的活动元素的值(.val())的元素?

<dt>KEY</dt>
<dd id="KEY">Bla Bla Value</dd>
<dt>KEY2</dt>
<dd id="KEY2">Bla Bla Value</dd>

假设在先前的情况下,一旦针对具有值KEY的DT触发.click动作,我需要对ID为相同Key的DD执行动作(与活动元素的值相同)。

更新 有不同的解决方案已接受的一个不适用于所有浏览器,请在下面查看Irvin提供的解决方案以及他对使用数据密钥而不是ID进行修改的修改

4 个答案:

答案 0 :(得分:2)

您可以使用attribute equal selector并检查ID:

  

选择具有指定属性的元素   完全等于某个值。

您可以设置自定义属性(例如data-key),而不是获取元素的文本,并将其用作选择器上的过滤器。

代码:

$("body").on("click", "#main-container dt", function () {
    $(this).siblings("dd[id='"+$(this).data("key")+"']").toggle();
});

演示:http://jsfiddle.net/EFb4X/5/

更新

第一个解决方案是很好的过滤自定义属性,因为您要过滤元素ID而不是属性选择器,您可以使用直接ID选择器,如:

$("body").on("click", "#main-container dt", function () {
    $('#'+$(this).data("key")).toggle();
});

演示:http://jsfiddle.net/EFb4X/6/

答案 1 :(得分:2)

这样可行:

$("dt").click(function() {

    // Change font color to red
    $("dd#" + $(this).html()).css({'color' : 'red'});
});

答案 2 :(得分:1)

这样的事情:

$('dt').on('click', function(e) {
    var dd = $('#' + this.innerText);
    // do something with dd
});

答案 3 :(得分:1)

试试这个,

$(document).on('click', 'dt', function() {
    var clicked_ele = $(this).text();
    $('dd[id=' + clicked_ele +']').trigger('click');  //performing click action on the dd with same key val as id
});