2010-07-16 59 views
1

我使用jquery 1.3,事件原始和克隆HTML塊之間進行區分

當我克隆與克隆(真)的元件的所有數據+事件被複制,但問題是 的事件之間進行區分原始的html塊和克隆的html塊。

當我嘗試將事件觸發到克隆的html塊時,原始html塊的事件也被解僱。

所以現在的大問題是如何

結賬的事件代碼區分在這裏jsfiddle.net/BbBqJ/1

+0

你能發佈你的代碼嗎?這通常不會發生,所以可能還有其他一些問題。下面是一個使用jQuery 1.3.2的例子,它顯示了乾淨的分隔:http://jsfiddle.net/BbBqJ/(除非你使克隆成爲原來的後代?) – user113716 2010-07-16 17:02:12

+0

以及它的大代碼,讓我創建一個管理它 – Hunt 2010-07-16 17:15:45

+0

http://jsfiddle.net/BbBqJ/1/鏈接到代碼時,我按下添加更多 它在下一個框中添加文本框也 – Hunt 2010-07-16 17:31:26

回答

0

當你有一個像$('.edit')例如一個選擇,你選擇頁面上元素的所有

要將選擇器集中到有限的上下文中,可以傳遞第二個參數。所以我所做的就是將您創建的新元素存儲到一個名爲$box的變量中,然後將其作爲$('.edit', $box)的上下文進行傳遞。

我對代碼進行了其他更改以清理乾淨。

http://jsfiddle.net/sxkxp/1/

同樣,只記得好像.edit選擇是影響所有頁面上存在的那些元素。

+0

感謝您的幫助,但如果我分配不同的類名爲克隆塊跟蹤塊,如果我點擊addmore然後我可以看到,事件的上下文屬於原始塊只有http://jsfiddle.net/sxkxp/7/ – Hunt 2010-07-17 06:50:43

+1

@Hunt - 其實,你可以看到上下文是正確的,因爲新的''顯示在正確的位置。你看到舊類名彈出的原因是你正在做'alert($ newBox.attr('class'))'',其中'$ newBox'仍然指向用於創建框的變量。該變量與處理程序的其餘部分一起被克隆。但你不再需要它了。試着將這個提示放在alert($ box.attr('class'))''的下一行,你會發現你是正確的。請注意我在示例中的其他評論:http://jsfiddle.net/sxkxp/9/ – user113716 2010-07-17 12:30:02

+0

非常感謝帕特里克的幫助,你能告訴我如何能夠拋光jquery的知識作爲工作之後這麼多的時間,我剛纔才知道,可以通過第二個參數作爲你的上下文:) – Hunt 2010-07-18 10:52:56

0

使用事件目標,它應該只與事件的起源互動...

$("something").bind("click", function (event) { 
    $(event.target).css("border", "1px solid #f00"); 
});