使用jquery的数据属性来关联两个元素

时间:2013-11-05 01:49:08

标签: jquery variables attr

我在jQuery中学到的第一件事就是Click()函数以及让一个元素影响另一个元素有多么棒。但是,当我有一个项目数组(我的文档全部)我想要生效一整个元素数组再次分散在我的文档中时,我该怎么办?

在我奇怪的想法中,我正在考虑使用数据属性。您可以在此处看到非常简化的版本:http://jsfiddle.net/Qnzpg/

首先,我在jsfiddle上的例子有很多更好的解决方案,我知道。但是,实际应用程序有点复杂,需要这种方法。

我试图将我的数据属性的值作为变量传递,并且让共享该变量的元素受到影响(在我的示例中,通过添加一个类):

$("#menu [data-cell]").click(function (e){
    e.preventDefault;

    //make the data value a variable
    var $cell = $(this).data();

    //find the other element with the same data value and add the class named "open"
    $('#pages [data-cell='$cell']').addClass('open');
});

我已经在很长一段时间里摆弄我的jQuery了,并且觉得最好打电话给专家。

我在这做错了什么?

3 个答案:

答案 0 :(得分:1)

你走了:

$('#menu li a').each(function() {
    $(this).click(function() {
        var attr = $(this).parents('li').attr('data-cell');
        $('#pages div').each(function() {
            $(this).removeClass('open');
            if($(this).attr('data-cell') == attr) {
                $(this).addClass('open');
            }
        });
    });
});

小提琴:http://jsfiddle.net/Qnzpg/7/

答案 1 :(得分:1)

您的字符串连接没有正确的语法,我认为您只想获取data-cell属性的值。

var $cell = $(this).data('cell');
$('#pages [data-cell="' + $cell + '"]')

虽然为了安全起见,但是在数据有空格的情况下,我用双引号包装了选择器值。

答案 2 :(得分:1)

我对您的代码进行了修改,现在运行正确

首先,我认为你错了,因为你没有连接变量$ cell但是在我意识到你没有得到attr数据单元之后,你需要从数据单元中得到这样的值:

var $cell = $(this).attr('data-cell');

并且需要像这样连接$ cell

$('#pages [data-cell='+$cell+']').toggle('open');