簡體   English   中英

點擊事件多次觸發(應該是一次)

[英]click event fired more than once ( supposed to be once)

這是我的第一篇文章,在這里我想創建一個chrome擴展名,當按下它時,它將顯示可以按下的鏈接,以及使用AJAX檢索的鏈接。 到目前為止,它仍然有效,唯一的問題是單擊任何鏈接時,有時它出現兩次甚至三次。 誰能給這個問題一個解釋和答案?

謝謝!

var links = [];
links.push("http://www.tenmanga.com/book/rss/id-16896.xml");
links.push("http://mangafox.me/rss/fairy_tail.xml");
links.push("http://feeds.feedburner.com/9gag?format=xml");

函數Start()

function start(){
    for (var i in links)
        getXML(links[i]);
    $(document).ready(function(){
    });


}

函數getXML

function getXML(url){
    var test = $.ajax({
        type: "GET",
        url: url,
        dataType: "xml",
        success: function(xml){
            parse(xml);
bind();
        }
    });
    return test;
}

function bind(){
    $("a").click(function(e){
        chrome.tabs.create({url:$(this).attr("href")});
    });
}
function parse(xml){
    //$("#content").append();
    var title = $(xml).find('title').first().text();
    var createClickHandler = function(arg){
        return function(){ 
            open_item(arg); 
        };
    }
    $("#content").append(title+"<br>");
    $(xml).find('item').each(function(){
        var temp = document.createElement("a");
        var title = this.childNodes[1].textContent;
        var link = this.childNodes[3].textContent;
        temp.innerHTML = title;
        temp.setAttribute("href",link);
        $("#content").append(temp);
        $("#content").append("<br>");
    });
    $("#content").append("<br>");
}

從這里開始!

var start = start();

在元素上單擊時多次調用click事件的唯一原因是,在該事件上注冊了多個事件處理程序。 每次您調用bind時,您所做的都是將事件綁定到'a',所以我想對於第一個鏈接,事件被觸發兩次,兩次觸發兩次,第三次觸發。可能不是使用$('a' )該屬性歸於頁面中的所有“ a”元素,您可以使用單獨的ID動態創建“ a”。 那必須結束奇怪的行為。

調用e.preventDefault(); 這里eevent在點擊的回調,這樣的事件不會冒泡,並且不會觸發任何東西。

而且,ajax返回后,每次成功都不應調用bind()。

而不是綁定每個鏈接,請執行一次以下操作:

$(document).on('click','a'
    function(e){
        chrome.tabs.create({url:$(this).attr("href")});
        return false;
    }
);

如果鏈接上沒有其他錨點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM