Javascript 如何使用字符串作为类名并在函数中调用它 $(文档).ready(函数(){ $('table tr td a')。单击(函数(事件){ 警报(event.target.id); var ClassName=event.target.id; 变量Pref='。' var ClassFull=Pref+ClassName; var TdText=$(ClassFull).text(); 警报(TdText); }); });

Javascript 如何使用字符串作为类名并在函数中调用它 $(文档).ready(函数(){ $('table tr td a')。单击(函数(事件){ 警报(event.target.id); var ClassName=event.target.id; 变量Pref='。' var ClassFull=Pref+ClassName; var TdText=$(ClassFull).text(); 警报(TdText); }); });,javascript,asp.net-mvc,web,Javascript,Asp.net Mvc,Web,标记: <script type="text/javascript"> $(document).ready(function () { $('table tr td a').click(function (event) { alert(event.target.id); var ClassName = event.target.id; var Pref = '.'

标记:

 <script type="text/javascript">
     $(document).ready(function () {
         $('table tr td a').click(function (event) {
             alert(event.target.id);
             var ClassName = event.target.id;
             var Pref = '.'
             var ClassFull = Pref + ClassName;
             var TdText = $(ClassFull).text();
             alert(TdText);
         });
     });
 </script>

账号:

@foreach(模型中的var项目) { @DisplayFor(modeleItem=>item.AcctNo) }

我得到了发送者的id,并且有一个类名称与发送者id相同的td,然后得到里面的文本。似乎没有返回我想要得到的文本

我假设的问题是,
employerName
可以有空格和特殊字符,这将改变选择器的含义

在这种情况下,您希望单击元素的父元素的下一个同级元素的文本

    <p>
        Account No:
        <input id="AcctNo" type="text"/>
        <input type="submit" id="submit" name="Submit" value="Submit" />
    </p>
    <table>
        @foreach (var item in Model)
        {
           <tr>
              <td>
                 <a id ="@Html.DisplayFor(modelItem => item.EmployerName)" 
                    href ="#">@Html.DisplayFor(modelItem => item.EmployerName)</a>
              </td>
              <td class = "@Html.DisplayFor(modelItem => item.EmployerName)" >
                 @Html.DisplayFor(modelItem => item.AcctNo)
              </td>
           </tr>
        }
    </table>

或者可以使用预定义的类名,如

$(document).ready(function () {
    $('table tr td a').click(function (event) {
        var TdText = $(this).parent().next().text();
        alert(TdText);
    });
});

我同意这个问题可能是因为EmployerName中的空格,但这里有一些其他方法来获取您的数据

注意,我将click事件处理程序移动到了tr标记。您可以使用html5数据属性来存储任何html标记上的任何信息。或者你可以像以前那样访问文本

$(document).ready(function () {
    $('table a.employer-name').click(function (event) {
        var TdText = $(this).parent().siblings('.acctNo').text();
        alert(TdText);
    });
});

账号:

@foreach(模型中的var项目) { @DisplayFor(modelItem=>item.EmployerName) @DisplayFor(modeleItem=>item.AcctNo) } $(文档).ready(函数(){ $('tr')。单击(函数(事件){ var TdText=$(this.find('.EmployerName').text(); var Td2Text=$(this.find('.AcctNo').text(); var Td3Text=$(this.find('.EmployerName').data('acctno'); 警报(TdText); }); });
can雇主名称可以有空格或特殊字符您不应该在其他元素中使用显示或编辑模板。请包括你的浏览器收到的源代码,你会明白为什么…减少缩进一点,让它回到你的视野。你说得对,先生,这是因为特殊字符。
$(document).ready(function () {
    $('table a.employer-name').click(function (event) {
        var TdText = $(this).parent().siblings('.acctNo').text();
        alert(TdText);
    });
});
<p>
    Account No:
    <input id="AcctNo" type="text"/>
    <input type="submit" id="submit" name="Submit" value="Submit" />
</p>
<table>
    @foreach (var item in Model)
    {
       <tr>
          <td class="EmployerName" 
                data-name="@Html.DisplayFor(modelItem => item.EmployerName)" 
                data-acctno="@Html.DisplayFor(modelItem => item.AcctNo)">
                    @Html.DisplayFor(modelItem => item.EmployerName)
          </td>
          <td class="AcctNo" >
             @Html.DisplayFor(modelItem => item.AcctNo)
          </td>
       </tr>
    }
</table>

 <script type="text/javascript">
     $(document).ready(function () {
         $('tr').click(function (event) {
             var TdText = $(this).find('.EmployerName').text();
             var Td2Text = $(this).find('.AcctNo').text();
             var Td3Text = $(this).find('.EmployerName').data('acctno');
             alert(TdText);
         });
     });
 </script>