2012-01-23 187 views
0

我試圖做一些事情,你可以動態插入一個HTML塊,如果你點擊某些單詞出現一個選擇框,你可以選擇你想要的項目喜歡替換這個詞。一旦從選擇列表中選擇了該項目,文本值就會出現在該字詞以前的位置。在點擊,顯示選擇,在選擇更改顯示文本

我只是遇到了最後一部分的麻煩 - 即。選擇該項目並獲取該項目的文本以替換選擇框。

var these_labels = "<select><option>Replacement A</option><option>Replacemnet B</option><option>Replacement C</option></select>"; 
$(".add").live('click', function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 

    $("#area").append("<div class='entry'>IF: <span class='label'>ANY</span></div>"); 
}); 

$(".label").live('click', function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 

    $(this).replaceWith(these_labels); 
    $(this).change(function(event){ 
     event.preventDefault(); 
     event.stopPropagation(); 

     $(this).replaceWith($(this).find(":selected").text()); 
    }); 
}); 

回答

0

您在整個使用this,但是,一旦你更換內容,this不再適用。您需要保留對您插入的項目的引用,以便您可以專門爲它們附加內容。

更新:你更新後的代碼應該是這樣的:

$(".label").live('click', function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 
    var labels = $(these_labels); 
    $(this).replaceWith(labels); 
    labels.change(function(event){ 
     event.preventDefault(); 
     event.stopPropagation(); 
     // this one is fine because it is not being referenced later 
     $(this).replaceWith($(this).find(":selected").text()); 
    }); 
}); 
+0

我如何修改它,這樣我可以替換原來的文本,與所選擇的價值?特別是因爲可能有多個入門級。也許我沒有這麼熱jQuery今晚大聲笑 – MrJ

+0

@MrJ更新了代碼示例。如您所見,您需要存儲對由'these_labels'創建的元素的引用,並監聽_that_元素上的更改。另外,你可以使用'$(this).val()'來代替。 – Ktash

+0

我想我現在明白了 - 謝謝!如果再次點擊選中的項目,是否有值? – MrJ