2013-05-13 83 views
0

我的一些代碼使用jQuery來創建元素<a>與點擊行爲給出一個函數:jQuery的動態點擊事件

$(alternatives).each(function (idx, elt) { 
    var element = $('<span class="label label-success">'); 
    var link = $('<a class="prop' + idx + '" title="' + elt + '">' + elt + '</a>'); 
    link.click(switchLabel); 
    element.append(link); 
    list.append(element); 
}); 

這裏的想法是捉對<a class="prop1-0" title="myTitle">my link</a> click事件來改變一個文本<span id="corr1-0">my old text</span>。兩個元素之間的鏈接由類後綴f.i構成。 1-0

我有幾雙<a>/<span>,我檢查了每一個ID。

一些環節的工作,但有的沒有:在控制檯沒有錯誤,沒有與螢火蟲追蹤...

綁定功能是:

function switchLabel(e) { 
    $('#corr'+ e.target.className.substr(4)).text($(e.target).attr('title')); 
} 

你有一些提示,以幫助我跟蹤這種不需要的行爲? 我可以在實施中犯錯嗎?

問候

+0

首先你使用變量'index'和'idx',是嗎? – Hoffmann 2013-05-13 15:32:52

+0

是的,這是一個錯字... – enguerran 2013-05-14 07:26:02

回答

4

你的變量不匹配,您使用的指標,而不是IDX等,並有更簡單的方法來創建元素和事件處理?

$.each(alternatives, function (idx, elt) { 
    var element = $('<span />', {'class' : 'label label-success', 
           id  : 'corr'+idx 
           } 
     ), 
     link = $('<a />' {id : 'prop' + idx, 
          title : elt, 
          text : elt 
          } 
     ); 
    link.on('click', function() { 
     $('#' + this.id.replace('prop','corr')).text(this.title); 
    }); 
    list.append(element.append(link)); 
}); 
+0

非常感謝分享。我不知道這個語法,並且快速查看後,它看起來更穩定。爲什麼?我的代碼是錯誤的還是框架問題? – enguerran 2013-05-14 07:32:52

+0

此代碼在引導popover元素中創建鏈接。這個由自舉代碼創建並顯示/隱藏的元素無法正確處理,因爲在第一次調用時,啓動了click事件,而在其他調用中(在隱藏/顯示循環後),它不是...... – enguerran 2013-05-14 07:46:23