当前位置: 首页 > 知识库问答 >
问题:

jquery在动态创建的div中选择动态类id

严劲
2023-03-14

我有一些动态创建新div(表单内部的输入)的JS。它工作得很好。我还有一些jquery,它检查下拉输入,如果单击特定的选择,它会显示一个单独的div。它工作得很好。

如果我试图使用jquery在一个动态创建的div中显示一个单独的div,那么它将不起作用。它的第一个实例确实有效,但动态创建的实例都无效。在四处搜索之后,看起来我需要一个代表团,但我似乎无法针对我的具体情况找到它。

JSFIDLE:http://jsfiddle.net/Xyzeg/(更改第一个字段中的“CPI”下拉列表,使事件熄灭)。fiddle包含用于动态创建div的其他JS。

任何建议都将不胜感激。

<div style="float:left">
<div id='dynamicInput'>Pension 1: Amount: $<input type='text' name='adjustmentInputs[]' value='0' size='13' maxlength='20'>Start Year:
<input type='text' name='adjustmentInputs[]' value='2032' size='5' maxlength='6'>
<input type='hidden' name='adjustmentInputs[]' value='2100'>
<select name='adjustmentInputs[]'>
  <option value='InflationAdjusted'>Inflation Adjusted</option>
  <option value='NotInflationAdjusted'>Not Inflation Adjusted</option>
</select>by
<select name='adjustmentInputs[]' class='pensionAdjustment1'>
  <option value='CPI'>CPI</option>
  <option value='constantPercentage'>Constant %</option>
</select>
<div id='constantPercentageText1' style='display: none'>@ <input type='text' name='adjustmentInputs[]' value='3' size='5' maxlength='6'>%</div>
</div>
   <input type="button" value="Add another Portfolio Adjustment" onClick="addInput('dynamicInput');">
</div>
<script>
$("[class*=pensionAdjustment]").change(function() {
    var n = $(this).attr('class').replace('pensionAdjustment', '');
    var newId = "constantPercentageText" + n;
    var selectedItem = $(this).children('option:selected');
    if ($(this).val() == 'constantPercentage') {
        $("#constantPercentageText" + n).css('display', 'inline');
        $("#constantPercentageText" + n).show();
    } else {
        $("#constantPercentageText" + n).css('display', 'none');
    }
});  
</script>

共有3个答案

蓟辰沛
2023-03-14

必须将事件绑定到父元素,然后向下过滤到所需的元素。这样,无论何时添加元素,它都会一直工作。这就是所谓的授权。将处理事件的任务委托给另一个元素。

$(document).on('change', "[class*=pensionAdjustment]", function(){
    var n = $(this).attr('class').replace('pensionAdjustment', '');
    var newId = "constantPercentageText" + n;
    var selectedItem = $(this).children('option:selected');
    if ($(this).val() == 'constantPercentage') {
        $("#constantPercentageText" + n).css('display', 'inline');
        $("#constantPercentageText" + n).show();
    } else {
        $("#constantPercentageText" + n).css('display', 'none');
    }
});
毋澄邈
2023-03-14

你可以用

$(document).on('change', '[class*=pensionAdjustment]', function(){
    // your code
});

最好使用父div,而不是文档

更新:当事件注册时,动态注入到DOM的元素不存在,因此新元素不会触发事件。使用事件委托,(在父元素上注册事件)可以解决这个问题,因为当任何元素触发事件时,事件会冒泡到它可以找到的最后一个元素(向上),这样父元素被触发,但在幕后,类似跟随的事情正在发生

e = e || window.event;
var el = e.target || e.srcElement;

你可以检查这个。

红经亘
2023-03-14

您需要委托新创建的元素!

换行

$("[class*=pensionAdjustment]").change(function() {

$(document).on('change',"[class*=pensionAdjustment]",  function() {
 类似资料:
  • 问题内容: 我在尝试了解如何在Django中创建动态选择字段时遇到了一些麻烦。我有一个模型设置类似: 我想做的是创建一个选择字段whos的值是与该骑手相关联的航点(将是登录的人)。 目前,我以如下形式覆盖init: 但是所有要做的就是列出所有路标,它们与任何特定的骑手都没有关联。有任何想法吗?谢谢。 问题答案: 你可以通过将用户传递给表单init来过滤航点 启动表单时从你的角度来看 在模型形式的情

  • 本文向大家介绍Javascript动态创建div的方法,包括了Javascript动态创建div的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Javascript动态创建div的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 问题内容: 我们需要创建SQLAlchemy类来访问多个外部数据源,这些数据源会随着时间的推移而增加。我们为核心ORM模型使用了声明式基础,并且我知道我们可以使用autoload = True手动指定新的ORM类,以自动生成映射。 问题是我们需要能够采用以下方式动态生成它们: 并动态地将其转换为如下所示: 我们不希望类的持久时间长于打开连接,执行查询然后关闭连接所需的时间。因此,理想情况下,我们可

  • 问题内容: 给定一个类名,我想动态创建一个Groovy类,向其添加属性和方法。我使用创建新类 对于我使用的方法 其中it.key是字符串(方法名),it.value是闭包。这很方便,因为我可以指定方法参数类型并进行类型检查。但是,如果不给它赋值,就无法指定动态创建的属性类型。我可以通过显式定义属性的getter和setter来解决此问题。这可行,但是metaClass.name = value或m

  • 问题内容: 我需要动态创建一个类。为了更详细,我需要动态创建Django类的子类。 通过“动态”,我打算基于用户提供的配置创建一个类。 例如 我想要一个命名为该类的子类的类。 该类应具有所选属性的列表。 ....在这种情况下 有什么有用的提示吗?:) 问题答案: 您可以通过调用内置函数并传递适当的参数来动态创建类,例如: 它适用于新型类。我不确定这是否也适用于老式类。

  • 问题内容: 该网站正在使用Prototype JS库。 页面加载后,它立即执行Ajax请求,该请求会拉出并显示页面的更多元素。 我需要能够选择那些动态创建的元素并使用method 隐藏它们。 我尝试使用选择和隐藏它们,但是这段代码没有“看到”动态元素。 我看到Prototype有方法,但是我不确定应该为我指定哪个Event?我尝试了事件“加载”,但没有成功。 我将不胜感激如何解决此问题的任何提示。