2016-03-14 106 views
0

使用JavaScript,我有一個搜索功能,它從數據庫中獲取信息,然後使用JavaScript將元素添加到我的網站中,在框中附近有一個十字架。我試圖做到這一點,當用戶按下元素附近的X時,如果他們犯了錯誤,他們可以將其刪除。如何刪除元素onclick

$('#addButton').on('click', function(event) { 
    var searchedValue = $('#search_term').val(); 
    var divHolder = $('.selectedStuff'); 
    $("<div>" + searchedValue + "</div>").css({ 
     'background-color': 'yellow', 
     'width': '700px', 
     'margin-top': '10px', 
     'border-style': 'solid', 
     'border-color': '#0000ff' 
    }).appendTo(divHolder); 

所以,我嘗試了某些方法,但我似乎無法讓它工作。我已經評論了一下。再次,只是當用戶點擊X時,該元素將被刪除。

+0

你已經嘗試什麼確切的代碼?你需要1)選擇/查找你想要刪除的元素。 2)刪除它 – llamerr

+0

你無法檢測僞元素上的事件,http://stackoverflow.com/a/7478344/4334348 – silviagreen

+0

下面的答案simalr我所嘗試的實際上,但似乎無法得到它的工作 – Nevershow2016

回答

2

您需要更改您的html,因爲您不能將點擊事件與「:: after」綁定,因爲它不是html元素。所以,而不是在「::之後」添加CSS來添加跨度,並在其上應用CSS。

$(document).ready(function() { 
 
    $('.searchFunction').keyup(function(event) { 
 
    var search_term = $("#search_term").val(); 
 

 
    $.post(document.location.href, { 
 
     search_term: search_term 
 
    }, function(data) { 
 
     $('.result').html(data); 
 
    }); 
 
    }); 
 

 
    $('.result').on('click', 'li', function(event) { 
 
    var result_value = $(this).text(); 
 
    $('#search_term').val(result_value); 
 
    $('.result').html(''); 
 
    }); 
 

 
    $('#addButton').on('click', function(event) { 
 
    var searchedValue = $('#search_term').val(); 
 
    var divHolder = $('.selectedStuff'); 
 
    $("<div>" + searchedValue + "<span>X</span></div>").css({ 
 
     'background-color': 'yellow', 
 
     'width': '700px', 
 
     'margin-top': '10px', 
 
     'border-style': 'solid', 
 
     'border-color': '#0000ff' 
 
    }).appendTo(divHolder); 
 

 
    $('.selectedStuff span').on("click", function(){ 
 
     $(this).closest("div").remove(); 
 
    }); 
 
    }); 
 
});
.selectedStuff > div { 
 
    width: 300px; 
 
} 
 
.selectedStuff span { 
 
    font-family: Arial; 
 
    color: red; 
 
    position: relative; 
 
    float: right; 
 
    right: -20px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input type="text" name='search_term' id="search_term" class="searchFunction"> 
 
<input id="addButton" type="button" value="Add"> 
 
<div class="dropdown"> 
 
    <ul class="result"></ul> 
 
</div> 
 
<div class="selectedStuff"></div> 
 
<div id="markx"></div>

0

根據您的信息,我建議你需要使用remove方法:

$('.selectedStuff > div:after').on("click", function() { 
    $(element_to_delete).remove(); 
} 
+0

嗨,試過這個,但沒有工作 – Nevershow2016

+0

你想刪除哪個元素? – Arsenowitch

+0

所以添加的元素,其搜索功能,如此不同的元素將被添加 – Nevershow2016

0
$('.selectedStuff > div:after').on("click", function() { 
    $(this).remove(); 
} 
+0

嗯再次不工作,現在我甚至不能添加元素 – Nevershow2016

+0

@aKIRa - 在這裏描述你在做什麼會很有幫助。 –

0

添加X到另一個位置,因爲你不能檢測象僞元素的事件:後。

X通過CSS放在首選位置

結果:jsfiddle

$('#addButton').on('click', function(event) { 
     var searchedValue = $('#search_term').val(); 
     var divHolder = $('.selectedStuff'); 
    $("<div ><div class='bar'>" + searchedValue + "</div><div class=\"close\">X</span></div>").css({ 

     }).appendTo(divHolder); 

    $('.close').on("click", function() { 
      $(this).parent().remove(); 
    }); 
    }); 
    }); 


.selectedStuff > div{ 
    width:500px; 
    display: table-row; 
} 

.close{ 
    display: table-cell; 
    font-family: Arial; 
    color: red; 
    position:relative; 
    right:-20px; 
} 

.bar{ 
     background-color: yellow; 
     width: 400px; 
     margin-top: 10px; 
     border-style: solid; 
     border-color: #0000ff; 
     display: table-cell; 


     } 
+0

多數民衆贊成在偉大但是,有沒有辦法讓它看起來像另一個X,就像它在同一個地方嗎? – Nevershow2016

+0

當然,我已經更新了我的答案,請看看 – silviagreen