2017-10-10 31 views
1

我有一个表,如果X有值,则显示X,否则,添加一个链接,单击它时将显示一个文本框,用户可以在其中输入该值。我动态地分配ID /类到链接和文本框,但是当我运行该应用程序时,每个单击任何链接似乎只触发第一行。我发出警报以显示正在点击的行,并且我总是得到第一行。看看浏览器的DOM浏览器,我可以看到每行都有自己的唯一ID。我如何获得每个OnClick事件以获取正确的对应ID?OnClick事件只获取第一个动态创建的行/ ID

C#/剃刀代码:

<td> 
     <a href="#" class="unmapped" onclick="UnmappedClick()" id="@string.Format("tr{0}",i)">Unmapped</a> 
     <input type ="submit" class="editAction hidden" value="@string.Format("tr{0}",i)" name="action:ChangeToEditSubAction" /> 
     <input type="hidden" name="@Html.Raw("EntityMapping.EMREntityID")" value="@Html.Raw(Model.DisplayResults[i].EMREntityID)" /> 
     <span class="@string.Format("tr{0}accountTxtBox",i) hidden">@Html.TextBoxFor(m => m.EntityMapping.AssignedHOAccountID)</span> </td> 

JavaScript函数

function UnmappedClick() { 
    //$(".accountTxtBox").removeClass("hidden"); 
    //$(".unmapped").addClass("hidden"); 
    //$("#btnSave").removeAttr('disabled'); 
    //$(".editAction").click(); 
    //$(".editAction").val(null); 

    alert($(".unmapped").attr('id')); 
    var txtBox = $(".editAction").val(); 
    var actTextBox = "." + txtBox + "accountTxtBox"; 
    $(actTextBox).removeClass("hidden"); 
    alert(txtBox); 

} 

DOM Explorer Image

回答

0

您可以使用 “本” 关键字的onclick事件传递一个参数。

onclick="UnmappedClick(this.id)" 

function UnmappedClick(id){ 
//now you have the specific ID 
} 

或在必要时通过整体控制

onclick="UnmappedClick(this)" 
+0

谢谢。就这样做了。没有运气:(仍然提醒“未定义” – Queen13

0

你可以试试这个

$(this).attr('id') // use this 

代替

$(".unmapped").attr('id') 

这会给你目前的元素ID当你点击

+0

我只是做了一个提示,并得到了“undefined”。 – Queen13

+0

你可以通过函数调用 'onclick =“UnmappedClick(this)”''这个'并尝试获取它在功能 'UnmappedClick(this){}' –

+0

我试图通过'this'并且出现此错误。“使用关键字标识符无效” – Queen13

0

正如你可以看到here,使用$('.class')将返回一个列表与该类的所有元素。当您使用$(".unmapped").attr('id')时,您将始终获得列表中第一个元素的值,这就是您始终获得第一行的原因。

对于var txtBox = $(".editAction").val();也会发生同样的情况。使用$(actTextBox).removeClass("hidden");,您将删除隐藏的所有匹配元素中的类。

为了得到一个元素的ID,您可以使用onclick="unmapped(this)onclick="unmapped(this.id)"使用取决于onclick属性下面的代码

function unmapped(element) { 
    var id = $(element).attr('id') 
    alert(id) 
} 

function unmapped(id) { 
    alert(id) 
} 

您可以检查this fiddle看到他们在行动。

相关问题