动态创建的表行元素不能使用带有jquery的Id引用

时间:2015-09-08 10:25:24

标签: jquery

我无法读取从我的编辑方法中动态添加的内容。这些行是动态添加的,行包含带有Id的span。我试图从另一个jquery方法读取跨度的内容。这两种方法都在下面给出。

function AddQuestionChoice() {
    var table = $("#questionOptionsTable");
    var index = $('#questionOptionsTable tr').length - 1;
    var choiceSequenceNo = $("#choiceSequenceNo").val();
    var choiceText = $("#choiceText").val();

    if (!$("#choiceSequenceNo").val())
    {
        alert("Enter sequence number");
        return;
    }

    if (!$("#choiceText").val())
    {
        alert("Enter choice");
        return;
    }

    if (!$.isNumeric(choiceSequenceNo))
    {
        alert("Enter valid sequence number.")
        return;
    }

    var row = "<tr bgcolor='#fff'><td id='choiceDiv[" + index + "]'> <span name= 'eventSurveyQuestion.Sequences[" + index + "]' id='eventSurveyQuestion.Sequences[" + index + "]'>" + choiceSequenceNo + "</span> &nbsp;</td><td> <span name='eventSurveyQuestion.Options[" + index + "]' id='eventSurveyQuestion.Options[" + index + "]'>" + choiceText + "</span> &nbsp;</td>" +
                     "<td><a href='javascript:EditQuestionChoice(" + index + ");'><img src='/Content/themes/Default/images/action1.png'></a> <a href='javascript:RemoveQuestionChoice(" + index + ");'><img src='/Content/themes/Default/images/action2.png'></a></td></tr>";

    $('#questionOptionsTable').append(row);

    var length = $('#questionOptionsTable tr').length;
    $("#choiceSequenceNo").val(length);
    $("#choiceText").val('');

}
function EditQuestionChoice(index)
{
    var sequenceNumber = $("#eventSurveyQuestion.Sequences["+index + "]").text();
    alert(sequenceNumber);
    var choiceText = $("#eventSurveyQuestion.Options["+ index +"]").text();
    $("#choiceSequenceNo").val(sequenceNumber);
    $("#choiceText").val(choiceText);
}

2 个答案:

答案 0 :(得分:1)

text是一个jquery函数而不是属性,使用$("#someId").text()来获取span的值。

确保已加载jquery且代码在ready函数内:

&#13;
&#13;
$(document).ready(function(){
 
  var row= "<tr><td><span id='someId'>spancontent</span></td></tr>";
  $('#table').append(row);
  
   $('#rowText').click(function(){
   
     alert($("#someId").text());
   });

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="table" border="1"></table>

<a href="#" id="rowText">View row text</a>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我认为问题是在jQuery中,点(。)是为类名保留的。所以你的跨度有一个问题:

"#eventSurveyQuestion.Sequence[..."

使用时:

var choiceText = $("#eventSurveyQuestion.Options["+ index +"]").text();

jQuery将寻找&#34;#eventSurveyQuestion&#34;用&#34; .Sequence&#34; class,而不是id#34;#eventSurveyQuestion.Sequence&#34;。

尝试改为(使用转义规则):

var choiceText = $("#eventSurveyQuestion\\.Options\\["+ index +"\\]").text();

注意:您需要转义所有有问题的字符:。 [和]

请在此处查看证据:jsfiddle

请参阅此处的说明:jQuery dot in ID selector