2015-12-21 53 views
-4

我知道它是重复的,但请参阅下面;jquery数据属性不起作用

我的锚链接

<a onclick="updateStatus(this)" data-pid="@job.Id" data-act="@action.Activity" data-sts="@action.StatusToSet" class="btn btn-xs btn-circle @action.CssClass @action.BackgroundColor" href="#"> 
              @action.Text 
             </a> 

我的javascript功能

function updateStatus(elem) { 
    var preAssignedJobId = $(elem).attr("data-pid"); 
    var activity = $(elem).attr("data-act"); 
    var statusToSet = $(elem).attr("data-sts"); 
} 

但我上述所有的越来越不确定。我看不出任何问题,有人可以指出。我的jQuery版本是1.11。

+3

'this'是不是你认为它是。 –

+0

虽然它与您的问题无关,但我想指出'.data(“pid”)'可能会将您的id转换为整数。这可能会也可能不会是理想的。使用'.attr(“data-pid”)'返回一个你可以更加可预测地处理的字符串。 – Steve

回答

2

你应该通过this作为参数,当你调用updateStatus()

<a onclick="updateStatus(this)" data-pid="@job.Id" data-act="@action.Activity" data-sts="@action.StatusToSet" class="btn btn-xs btn-circle @action.CssClass @action.BackgroundColor" href="#"> 
              @action.Text 
             </a> 

而且此函数的参数

function updateStatus(param) { 
    // Then use param 
    var preAssignedJobId = $(param).data("pid"); 
    var activity = $(param).data("act"); 
    var statusToSet = $(param).data("sts"); 
} 
0

通过你的元素的功能。

function updateStatus(elm) { 
 
    var preAssignedJobId = $(elm).data("pid"); 
 
    var activity = $(elm).data("act"); 
 
    var statusToSet = $(elm).data("sts"); 
 
    $(elm).text("hhH"); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a onclick="updateStatus(this)" data-pid="@job.Id" data-act="@action.Activity" data-sts="@action.StatusToSet" class="btn btn-xs btn-circle @action.CssClass @action.BackgroundColor" href="#"> 
 
              @action.Text 
 
             </a>

-1

既然你已经使用jQuery,从HTML代码中删除您的onclick和美国应该是一个jQuery的事件处理程序。

HTML

<a id="anch1" data-pid="@job.Id" data-act="@action.Activity" data-sts="@action.StatusToSet" class="btn btn-xs btn-circle @action.CssClass @action.BackgroundColor" href="#"> 
              @action.Text 
             </a> 

的jQuery

$(function(){ 
    $("#anch1").click(function(){ 
     var $this = $(this); 
     var preAssignedJobId = $this.data("pid"); 
     var activity = $this.data("act"); 
     var statusToSet = $this.data("sts"); 
    }); 
}); 
0

你可以简单地委派click事件的anchor并提取所需的信息。

$('a').on("click",function(e) 
{ 
    //e.preventDefault(); 
    var preAssignedJobId = $(this).data("pid"); 
    alert(preAssignedJobId); 
    var activity = $(this).data("act"); 
    var statusToSet = $(this).data("sts"); 

}); 

例子:https://jsfiddle.net/DinoMyte/opmy3n8j/