【问题标题】:How do you target the Jquery .load function inside a dynamically generated div如何在动态生成的 div 中定位 Jquery .load 函数
【发布时间】:2013-06-18 23:58:30
【问题描述】:

短: 如何在动态生成的 div 中使用 Jquery .load 函数,但定位到未点击的 ID。

我的想法是我有一个按钮,每次使用 jquery 的“$().append()”功能单击“name+(sequential id”) 时都会添加新的 div。将 div 添加到页面后,“$().load()”会用两个选择框和另一个 div 填充 div。

加载后,用户可以使用第一个选择框来选择一个值。

选择值时,“$()。在jQuery检查中的('单击”功能,也看到它是第一个选项框,并单击并更改。

此时在第一个选项框被选中并更改后,“().load()”用于更新第二个选项框周围的“#ajax-load-1”div。这是我无法获得“.load”以查看 div 的 ID 的地方。

我做了很多搜索,但空手而归,很多关于如何使用 .on("click" 来获取动态生成但不是未被点击的元素的 ID 的教程。

这是上述代码的简化示例。

HTML:

<!-- |This box has been dynamically generated and named through a Jquery .load() | -->

<div id="dynamic-box-1">

<select id="select-1">

    <option>1</option>

    <option>2</option>

</select>

<!-- | div to be .load()'ed after an option is selected in #select-1 |-->
<div id="ajax-load-1">

    <select id="ajax-select-1">

        <option>1</option>

        <option>2</option>

    </select>

</div>

</div>

<!-- | End of dynamic box | -->

jQuery

$("#select-1").on("click", function(){

$("#select-1").change(function(){

       $("#ajax-load-1").load("../php/ajax-load-1.php");

});

});

【问题讨论】:

  • 为什么change事件嵌套在click事件中
  • @Sushanth,因为他对事件委托的工作方式感到困惑。

标签: php jquery dom load onchange


【解决方案1】:

尝试使用事件委托

替换

$("#select-1").change(function(){

$(document).on('change', '#select-1', function(){

并移除包含它的点击事件。

如果您提供的HTML 是您希望在应用程序中看到的那个。然后你可以用这样的东西得到 div 的id

 $(document).on('change', '#select-1', function(){
     var divId = $(this).next('div').attr('id');
     $("#" + divId ).load("../php/" + divId + '"php");
 });

【讨论】:

  • 我认为他当前的应用程序设计是尝试利用迭代器创建新元素,因此#select-1 应该是[id^=select],并且在他的函数内部,他应该使用var theID = $(this).prop('id').split('-')[1] 来获取int value。然后,他可以在定位其他元素时将其用于他的选择器,"ajax-load-"+theID 等等。
  • 感谢您的帮助和建议,我将执行这些更改并返回我的结果!
  • 进行推荐的调整,一切正常,谢谢您的回答!
猜你喜欢
  • 2013-04-11
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
  • 2012-12-29
相关资源
最近更新 更多