0

我得到的是一个包含 DIV 的网页,我在其中动态地放入一个带有选择器按钮的条目列表,我已经为这个例子简化了很多代码

目标 DIV 看起来像

<div id="targetdiv"></div>

我要求服务器提供一个列表并构建一个看起来像的字符串

<div>
 nameofentryfromserver1
 <input type="button" class="dynamicbutton" onclick="someroutine('nameofentryfromserver1')">
</div>
<div>
 nameofentryfromserver2
 <input type="button" class="dynamicbutton" onclick="someroutine('nameofentryfromserver2')">
</div>
<div> ... same thing for next entry and so on

然后我将它插入到文档中

$( "#targetdiv").html( generatedstring );

现在这工作正常,我得到了一个很好的列表,当我点击生成的按钮时,正确的例程被启动并且参数被正确传递,我得到了我期望的结果。

但是,当按下按钮时,我想禁用所有“动态按钮”类元素,一旦处理完成就重新启用它们。

在我调用的例程中,我有这条线

$( ".dynamicbutton").attr( "disabled", "disabled");

但这似乎不会影响任何动态生成的内容,如果我在页面上有属于同一类的其他按钮,它们会被禁用,所以看起来我只能使用此方法访问最初加载的文档中的内容.

我什至尝试给每个按钮一个唯一的 id 并单独引用每个按钮,但没有成功。

那么有没有一种方法可以生成这个内容,以便 jQuery 可以通过它的正常元素选择来访问它,或者我需要使用其他一些技术来操作它们吗?

4

4 回答 4

1

当事件绑定到#target时,您需要为这种情况委派事件,因为 DOM 中的元素不可用

此外,最好使用.prop() 而不是.attr()

尝试这个

$('body').on('click', '#targetdiv', function() {

     $(".dynamicbutton").prop( "disabled", true);

});
于 2012-11-05T16:39:13.653 回答
1

这个怎么样?在#targetdiv 之后插入脚本并尝试它是否可以工作。此处的 .dynamicbutton 只会禁用 id targetdiv 内的所有类动态按钮。

<div id="targetdiv"></div>
<script type='text/javascript'>
    $('.dynamicbutton').click( function() { 
        $('#targetdiv .dynamicbutton').attr("disabled", "disabled");
    });
</script>
于 2012-11-15T10:04:03.760 回答
1

您需要在将动态内容添加到页面后运行代码。如果之前运行代码,jQuery 看不到动态内容。我会在用户按下按钮时运行代码,然后在添加动态内容后再次运行代码。然后在完成处理后将其删除。

你也可以使用$( ".dynamicbutton").prop( "disabled", true);

于 2012-11-05T16:34:14.937 回答
1

似乎如果我使用了一个以前没有用于选择的类,那么我可以使用它来选择我的动态生成的组。

因此,如果我生成不确定数量的输入,class="brandspankinnewelements"并且该类以前没有用作页面上任何其他元素的选择器

我现在可以选择该组$( ".brandspankinnewelements" )

这让生活变得简单多了。

于 2012-11-15T09:19:54.147 回答