开发者

jQuery 1.5.0 to 1.5.1 breaks previous script

I needed to update my jQuery library for some bugs that IE9 has with <= v1.5.0. Upgrading the library to 1.5.1+ (even at current 1.6.4) breaks some script that I have on the page, though... (so of course, fix one issue, cause another)...

The script allows the user to add and subtract a group of input boxes (so, if they want to input a single line item, they do just that... but they can add unlimited amount of additional line items).

//ADDS ANOTHER USER
$(".add-user").click(function() {
    onemore = $("#userSelectBoxes").clone();
    onemore.find(":input").each(function() {
        $(this).val("");
    });

    $("#user_block > #userSelectB开发者_Go百科oxes:last").after(onemore);
    set_add_del();
    return false;
});

$(".removeable").click(function() {
    $(this).parent().remove();
    set_add_del();
    return false;
});

function set_add_del() {
    $('.remove_cat').show();
    $('.add_cat').hide();
    $('.add_cat:last').show();
    $("#user_block > #userSelectBoxes:only-child > .remove_cat").hide();
}

The add and remove buttons, in the HTML are as follows (and they just add another DIV of input fields basically):

<a href="#" class="remove_cat removeable">-</a>
<a href="#" class="add_cat add-user">+</a>

So with 1.5.0 - this would work properly, and let me click + or - unlimited amount of times and always function. With 1.5.1+, I can click the + ONCE, then nothing else works (adding OR deleting).

Any ideas? Hopefully I included all that would be needed here...

UPDATE 9/27/11 @ 5:05 PM EST I followed the suggestions in the comments below. No luck. It actually performs exactly the same...

I should note that when I click for the 2nd time, not only does it no work (as I stated earlier), but it will pop me back up to the top of the screen as well.

Here is the latest code...

$(".add-user").click(function(){
                onemore = $(".userSelectBoxes").first().clone();                

                onemore.find(":input").each(function(){
                    $(this).val("");
                });

                $("#user_block > .userSelectBoxes:last").after(onemore);
                set_add_del();

                return false;
            });

            $(".removeable").click(function(){
                $(this).parent().remove();
                set_add_del();
                return false;
            });

            function set_add_del(){
            $('.remove_cat').show();
            $('.add_cat').hide();
            $('.add_cat:last').show();
            $("#user_block > .userSelectBoxes:only-child > .remove_cat").hide();
            }


You can use two different versions of jQuery on a page. You'll need to call .noConflict() after loading the second version of the library. This will reset the value of the $ object to the first version of the library.

Documentation

<script type="text/javascript" src="jquery.1.5.0.js"></script>
<script type="text/javascript" src="jquery.1.5.1.js"></script>
<script type="text/javascript">
    $.noConflict();

    //'$' now refers to 1.5.0
    //'jquery' now refers to 1.5.1
</script>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜