2011-10-03 46 views
1

具體的話,我已經在一個divjQuery的功能,將取消對點擊

<div class="list">Abc, Test, Ready</div> 

下面的DIV以下信息,我有

<a href="javascript:void(0)" class="Abc">Remove Abc</a> 
<a href="javascript:void(0)" class="Test">Remove Test</a> 
<a href="javascript:void(0)" class="Ready">Remove Ready</a> 

我想寫一個jQuery這些額外的信息函數,當你點擊相關的刪除鏈接時,將刪除Abc,Test,Ready(如果需要,還可以用逗號)。

+2

您可以包你想在一個元素去掉,如'什麼',然後刪除... ** **或從剖析'的.text()' div,刪除文本,並再次設置它的'.text()'。 – Brad

回答

2
$('a').click(function() { 
    var str = $(this).attr("class"); 
    $('.list').text($('.list').text().replace(str,'')); 
}); 

http://jsfiddle.net/PUure/

但如果你真的需要刪除逗號,你需要多一點創意:

$('a').click(function() { 
    var str = $(this).attr("class"); 
    var rgx = new RegExp(str + ',?\\s*'); 
    $('.list').text($('.list').text().replace(rgx,'')); 
}); 

http://jsfiddle.net/PUure/4/

+0

要包含逗號,您需要一個正則表達式。 'var rgx = new RegExp(str +'[,\\ s] *');'http://jsfiddle.net/PUure/1/ – timrwood

1

編輯:更新了(懶洋洋)去掉尾隨逗號而不使用正則表達式;)

檢查the fiddle

$(document).ready(function(){ 
    $('a').click(function(){ 
     $('div.list').html($('div.list').html().replace($(this).attr('class') + ', ', '').replace($(this).attr('class'), '')); 
    }); 
}); 
0

你可以這樣做:

$('a').click(function(e){ 
    e.preventDefault(); 
    var word = $(this).attr('class'); 
    var div = $('.list').text(); 
    div = div.replace(word, ''); 
     $('.list').text(div); 

}); 

這裏小提琴http://jsfiddle.net/sysCc/

0
$('a').click(function(){ 
    var str = $(this).attr('class'); 
    var obj = $('.list'); 
    var currentText = obj.text(); 
    obj.text(currentText.replace(str,''); 
}); 

或濃縮:

$('a').click(function(){ 
    $('.list').text($('.list').text().replace($(this).attr('class'),'')); 
}); 
0

你會最好將數據保存在一個數組中,然後修改該數組並使用新數據刷新您的div

var data = ["Abc", "Test", "Ready"]; 
refresh(); 

$("#Abc").click(function() { remove("Abc") }); 
$("#Test").click(function() { remove("Test") }); 
$("#Ready").click(function() { remove("Ready") }); 

function refresh() { 
    $("div").text(data.join(", ")); 
} 

function remove(word) { 
    for(var i = 0; i < data.length; i++) { 
     console.log(i, data[i], word, data[i] == word); 
     if (data[i] == word) 
      data.splice(i, 1); 
    } 
    console.log(data); 
    refresh(); 
} 

http://jsfiddle.net/Xeon06/dHp3b/