jQuery取代了div停止响应mouseclick

Phi*_*hil 3 html asp.net jquery

我试图在下拉框中替换值.替换工作正常(在这个优秀社区的帮助之后),但之后滑动功能停止工作.我找不到任何错误,所以我问这是否与jQuery和javaScript如何工作有关?元素是否在加载时"映射"到DOM,如果是的话; 那意味着用另一个div替换div会导致jQuery失去对div的追踪吗?

我使用此代码检查是否单击了div:

$(document).ready(function () {

    $('.button_slide').click(function () {
        var num = $(this).attr('rel');
        $('div.content_slide:not(.' + num + ') ').slideUp(400);
        $('div.' + num).slideToggle(400);
    });
    return false;
});
Run Code Online (Sandbox Code Playgroud)

这是div:

<div class="button_slide" rel="slide1">Alts:</div>
<div class="content_slide slide1">
  <input id="Button1" rel="slide1" class="button_vertical click_button" type="button" value="2" size="10px" />
  <input id="Button2" rel="slide1" class="button_vertical click_button" type="button" value="3" />                                                    
</div>
Run Code Online (Sandbox Code Playgroud)

这是下拉框的jQuery:

        $(function () {

            $('.click_button').click(function () {

                var num = $(this).attr('rel');

                $('.button_slide[rel="' + num + '"]').replaceWith("<div class='button_slide' rel='" + num + "' >" + $(this).val() + "</div>");
                $('div.content_slide').slideUp(600);
            });
        });
Run Code Online (Sandbox Code Playgroud)

我在这个上拉头发,jQuery不是我强大的一面......你怎么解决这个问题?

SLa*_*aks 6

click函数为当前在jQuery对象中的元素添加一个处理程序.
新的替换元素没有任何处理程序.

您需要调用.live,这将为匹配选择器的所有元素添加处理程序,无论何时创建它们.

例如:

$('.click_button').live('click', function() {
    ...
});
Run Code Online (Sandbox Code Playgroud)