2017-01-20 67 views
1

我有这样的代码:获取价值的jQuery

<div class="container"> 
    <div class="switchStatus btn-group" data-module="xxx"> 
      <a class="btn btn-primary">Active</a> 
      <a class="btn btn-primary">Inactive</a> 
    </div> 
</div> 

我怎样才能获得data-module内容?

其实,我的代码看起来是这样,但它不工作:

$('.container').on('click', '.switchStatus a', function() { 
    var module = $(this).data('module'); 
}); 

感谢。

+1

模块属性是在父.... 。不是锚点 – epascarello

回答

2

尝试

var module = $(this).parent().data('module');

+0

'.closest()'几乎总是比'.parent()'更受欢迎,因为它不需要特定的层次结构,因此稍后可以轻松修改DOM,而无需重新编写所有JavaScript选择器。 – mhodges

+0

@mhodges,我同意。然而在这种情况下,父母只是一个包含两个超链接'a'标签的包装div,它不应该在部分中改变。 – VHS

+0

我同意你的看法,但是开发人员应该始终致力于尽可能地写出未来的代码。没有很好的理由(尤其是在这种情况下)不这样做。 – mhodges

1

内的点击处理程序回调函数,该this context将被绑定到被点击的<a>元素。要获得父级,可以使用.closest()方法和选择器。它可能看起来如下:

$(this).closest("[data-module]").attr("data-module");

0

试试这个,whitout节点 'A'

$('.container').on('click', '.switchStatus', function() { 
    var module = $(this).data('module'); 
    alert(module); 
}); 
1

使用最接近(” switchStatus。)。

jQuery的设置回调函数的范围是 回调主题的元件

所以我想这意味着在上选择参数在这种情况下,元件(.switchStatus一个)

$('.container').on('click', '.switchStatus a', function(event) { 
 
    var module = $(this).closest('.switchStatus').data('module'); 
 
    console.log('My name is ' + module) 
 
    event.stopPropagation() // always good to stop event bubbles after you have used them. 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="switchStatus btn-group" data-module="Spartacus"> 
 
      <a class="btn btn-primary">Active</a> 
 
      <a class="btn btn-primary">Inactive</a> 
 
    </div> 
 
</div>