Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从jQuery中单击的父级获取值_Javascript_Jquery - Fatal编程技术网

Javascript 从jQuery中单击的父级获取值

Javascript 从jQuery中单击的父级获取值,javascript,jquery,Javascript,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> </d

我有以下代码:

<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>
谢谢。

试试看

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

试试看


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

在单击处理程序回调函数中,
此上下文将绑定到已单击的
元素。要获取父级,您可以使用带有选择器的
.closest()
方法。它可能如下所示:


$(this).closest(“[数据模块]”).attr(“数据模块”)

在单击处理程序回调函数中,
此上下文将绑定到已单击的
元素。要获取父级,您可以使用带有选择器的
.closest()
方法。它可能如下所示:


$(this).closest(“[数据模块]”).attr(“数据模块”)

尝试此操作,去掉节点“a”

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

尝试此操作,去掉节点“a”

$('.container').on('click', '.switchStatus', function() {
    var module = $(this).data('module');
    alert(module);
});
使用最近的('.switchStatus')

jQuery将回调函数的作用域设置为 回调的主题

所以我猜这意味着on选择器参数(.switchStatus a在本例中)中的元素

$('.container')。在('单击','切换状态a',函数(事件){
var module=$(this).closest('.switchStatus').data('module');
log('我的名字是'+模块)
event.stopPropagation()//在使用事件气泡后,停止它们总是很好的。
});

活跃的
不活跃的
使用最近的('.switchStatus')

jQuery将回调函数的作用域设置为 回调的主题

所以我猜这意味着on选择器参数(.switchStatus a在本例中)中的元素

$('.container')。在('单击','切换状态a',函数(事件){
var module=$(this).closest('.switchStatus').data('module');
log('我的名字是'+模块)
event.stopPropagation()//在使用事件气泡后,停止它们总是很好的。
});

活跃的
不活跃的

模块属性位于父级上。。。。。不是anchormodule属性在父项上。。。。。不是锚定
.closest()
几乎总是优于
.parent()
,因为它不需要特定的层次结构,使得以后修改DOM更容易,而无需重写所有javascript选择器。@mhodges,我同意。然而,在这种情况下,父类只是一个包装div,包含两个hyperlink
a
标记,不应该部分更改。我同意你的观点,但开发人员应该始终致力于编写尽可能经得起未来考验的代码。也没有什么好的理由(尤其是在这种情况下)不这样做。
.closest()
几乎总是比
.parent()
更受欢迎,因为它不需要特定的层次结构,使得以后修改DOM更容易,而不必重写所有javascript选择器。@mhodges,我同意。然而,在这种情况下,父类只是一个包装div,包含两个hyperlink
a
标记,不应该部分更改。我同意你的观点,但开发人员应该始终致力于编写尽可能经得起未来考验的代码。也没有理由(特别是在这种情况下)不这样做。