亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何避免在第二次調用后在 ajax 上附加重復項?

如何避免在第二次調用后在 ajax 上附加重復項?

料青山看我應如是 2022-05-12 16:43:28
我有一個名為 File 的按鈕,它是一個下拉菜單,其中包含另一個名為 open 的按鈕。一旦用戶單擊打開,我就會有一個 ajax GET 請求,該請求在每次調用后附加一個按鈕。當用戶單擊打開一次時,按鈕被附加。但是,當用戶再次單擊打開時,會再次附加相同的按鈕,具有相同的屬性,如果用戶第三次單擊打開按鈕,則該按鈕會再次附加一次,因此總共是 3 次。如何確保按鈕只附加一次?{{}} 來自 django web 框架,不是問題      <input type = "button" class = "openGraph" value = "{{titles}}" id="{% url 'openGraph' title=titles.id %}">這是用戶按下打開按鈕時發生的情況。 $(document).ready(function(){                $('#openXML').on('click',function(event){                    var csrftoken = getCookie('csrftoken');                    $.ajax({                        type: "GET",                        url: "/loadTitles/",                        dataType: 'text',                        headers:{                            "X-CSRFToken": csrftoken                            },                        success: function(data){                            var json = JSON.parse(data)                            var length = Object.keys(json).length                                                           var pk = "/openGraph/" + json[length-1]['pk']                            var title = json[length-1]['fields']['title']                            myButton="<input type=\"button\" class = \"openGraph\" value=\""+title+"\" id="+pk+"/\>";                            $("#loadAllTitles").append(myButton)                        }                    });                })            });
查看完整描述

2 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

因為 ID 必須是唯一的,所以我建議在添加之前測試按鈕是否已經存在。因此,您需要更改此行:


$("#loadAllTitles").append(myButton)

和:


if ($("#loadAllTitles").find('#' + $.escapeSelector(pk + '/')).length == 0)

  $("#loadAllTitles").append(myButton)

我收到以下控制臺錯誤:未捕獲的錯誤:語法錯誤,無法識別的表達式:#/openGraph/104 –


如果您使用的是 jQuery 3.x,您需要使用:


jQuery.escapeSelector():轉義任何在 CSS 選擇器中具有特殊含義的字符。


更新 雖然pk是您創建新元素時的 ID,但您在此 ID 中添加了 final /。這是你的問題。


$('button').on('click', function(e) {

    var pk = '#/openGraph/104';

    var title='title';

    myButton="<input type=\"button\" class = \"openGraph\" value=\""+title+"\" id="+pk+"/\>";

    if ($("#loadAllTitles").find('#' + $.escapeSelector(pk + '/')).length == 0)

        $("#loadAllTitles").append(myButton)

})

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<form id="loadAllTitles">


</form>

<button type="button">Click to add the same input field</button>


查看完整回答
反對 回復 2022-05-12
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

檢查第 3 行是否存在按鈕


$(document).ready(function(){

    $('#openXML').on('click',function(event){

        if (!$('#+pk+').length) {

                // Your code

        }

    }

}


查看完整回答
反對 回復 2022-05-12
  • 2 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號