我在两个DIV下有一个下拉列表。在更改值时,我正在发出AJAX请求。之后我得到了价值并存储在一个变量中。现在我需要将接收到的值设置为当前DIV的父级父级兄弟姐妹。请参阅以下代码。
<div class="parentcontainer">
<div class="ui-block-a">
<div class="psFieldLabel">Attendee</div>
<div class="psFieldInput">
<select name="namelist" id="nameListId" maxlength="50" class="required attendeeName">
<option></option>
<option value="Hari">Hari</option>
<option value="Ramesh">Ramesh</option>
<option value="Kumar">Kumar</option>
</select>
</div>
</div>
<div class="ui-block-b">
<div class="psFieldLabel">Description</div>
<input type="text" name="descriptionName" id="descriptionId" value="0" class="psName description" />
</div>
</div>
在我的Javascript中: on&#34;参与者名称&#34; select class我正在进行Ajax调用并获得价值。但我无法将收到的值推送到&#34; descriptionName&#34;类。
注意:在按钮上单击我将动态多次生成上述标记(&#34; parentcontainer&#34;类)。因此,每当我更改下拉值时,都应更新相应的描述值。但不是在下一个&#34; parentcontainer&#34;。
试过这个,但它不起作用:
$(this).parent().parent().siblings(".description").val(ajaxResult);
答案 0 :(得分:3)
在此代码中
$(this).parent().parent().siblings(".description").val(ajaxResult);
正如您所提到的,您在ajax成功中这样做,此处$(this)
不会指向您更改的下拉列表。所以这就是你能做的。
创建一个变量来存储触发更改事件的下拉列表,然后导航到父父级并执行您的操作。喜欢这个
var $dropdown= $(this); // inside your change event save the dropdown into a variable.
$.ajax({
...
...
success: function(ajaxResult){
$dropdown.parent().parent().siblings(".description").val(ajaxResult);
// navigate from the dropdown.
}
});
也是一个指针:如果标记中输入的id是唯一的,那么您可以直接执行此操作。 $('#descriptionId').val(ajaxResult)
答案 1 :(得分:2)
对于我的回答,我猜$(this)
是选择。
你有什么问题,请看:
<!-- PARENT 3 -->
<div class="parentcontainer">
<!-- PARENT 2 -->
<div class="ui-block-a">
<div class="psFieldLabel">Attendee</div>
<!-- PARENT 1 -->
<div class="psFieldInput">
<select name="namelist" id="nameListId" maxlength="50" class="required attendeeName">
<option></option>
<option value="Hari">Hari</option>
<option value="Ramesh">Ramesh</option>
<option value="Kumar">Kumar</option>
</select>
</div>
</div>
<div class="ui-block-b">
<div class="psFieldLabel">Description</div>
<input type="text" name="descriptionName" id="descriptionId" value="0" class="psName description" />
</div>
</div>
您只拨打parent()
两次:
$(this).parent().parent().siblings(".description").val(ajaxResult);
尝试再次致电parent()
。
您还应该将.siblings
替换为.find
,因为说明字段不是parentContainer的直接兄弟
正如Reddy所提到的,如果你在ajax回调中进行编码,你应该使用select的引用而不是$(this)
,因为在回调中,this
指的是回调函数: / p>
var select = $(this);
$.ajax({
// some arguments
// ....
success: function(ajaxResult){
select.parent().parent().parent().find(".description").val(ajaxResult);
}
});