我在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了,并且觉得最好打电话给专家。
我在这做错了什么?
答案 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');
}
});
});
});
答案 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');