2015-11-06 90 views
0

我有一大堆的组成如下的实际问题,有些是或否单选按钮和一个评论框的问题进行了调查。我已经包含一张照片给你一个视觉。这是问题填充后的html结构。选择一个动态填充的单选按钮

<div class=”yesno-question-row”> 

<span class=”yesno-question”> 

    Some Question……….. 

</span> 

<span class=”yesno-answer”> 

    <span class=”yesno-radio required”> 

      <input type=”radio” class=”yesno-radio-button” value=”Yes” /> 

      <input type=”radio” class=”yesno-radio-button” value=”No” /> 

    </span> 

<span class=”yesno-comment”> 

      <textarea class="yesno-textarea ui-widget-content"></textarea> 

</span> 

    </span> 

</div> 

此信息通过Web服务和jQuery动态填充。看到这些问题正在动态填充每个问题包含相同的类名称,跨度名称等...有超过40个问题,它们被附加到div。

我所试图做的是选择一个特定的问题,有一个特定的单选按钮选中。然后,如果单击某个单选按钮,则会自动检查其他单选按钮。我相信Jquery是我最好的选择,这导致我尝试按类来选择元素 - 它们都具有相同的类,因此无法工作,我试图通过隐藏数据属性来选择元素 - 这不起作用看到该属性根据调查发送给谁而变化。我试着做更多的研究,我认为接下来最好的事情是使用jquery eq()属性,因为我可以根据它的位置选择一个元素。但是,我遇到问题实施此解决方案。如果您有更好的选择或如何最佳进行的视觉示例,我将不胜感激。

下面是代码,它创建的问题;

var $yesNoQuestionRow = $("<div class='yesno-question-row' data-answerid='" + answerId + "'/>"); 
      var question = "<span class='yesno-question'>" + questionText + "</span>"; 
      var radioId = "yesno" + answerId; 
      var radioChecked = new Object(); 
      radioChecked[answerText] = "checked"; 
      var yesno = "<span class='yesno-radio required'><input class='yesno-radio-button' type='radio' name='" + radioId + "' value='Yes' " + radioChecked["Yes"] + ">Yes <input class='yesno-radio-button' type='radio' name='" + radioId + "' value='No' " + radioChecked["No"] + ">No</span>"; 
      var textarea = "<span class='yesno-comment'> <textarea class='yesno-textarea ui-widget-content'>" + commentText + "</textarea></span>"; 
      return $yesNoQuestionRow.append($(question)).append($("<span class='yesno-answer'/>").append($(yesno)).append($(textarea))); 
+0

你能改变产生这个html的代码吗? – Jason

+0

你可以这样做,但你必须创建它们的代码已经允许你给它们唯一的标识符。我为你写了一个答案。 – Jason

回答

0

你已经有一个动态命名的属性为您的元素,你(应该)提供一个独特的名字,所以你可以用它来选择它们。

如果,例如,您可以创建一个$yesNoQuestionRowanswerId = 2,您可以选择该行,并得到与此无线输入值:

$(".yesno-question-row[data-answerid='2']").find(".yesno-radio-button:checked").val() 

编辑:刚才我注意到,你说你有一个隐藏的数据属性根据收件人而变化。如果该属性是data-answerid属性,则只需创建另一个根据问题/回答而不是收件人而变化的属性。或者您可以动态创建独特的传统id属性。

+0

其实我只是意识到一些事情,我需要确保每次调查结束时都会检查单选按钮。如果这个ID是动态的,并且我们编写了一个脚本,在第二次调查结束时通过它的id选择该元素,它将会破坏该代码 – CoderPoet

+0

我不认为我理解你的应用程序。当你说“每次调查结束”时,你的意思是什么?您已经发布了用于创建一组输入元素和截断版本的HTML的函数的明显主体。不同的客户如何接收不同版本的页面? – Jason

+0

我想我的问题是,如果它的名字是动态的,并且现在有方法按类来抓取它,我将如何定位一个元素?每次创建问题的实例时,数据答案id都会更改。 – CoderPoet