2015-12-21 50 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/