나는 체크 박스를 통해 루프를 설정하고 아코디언 메뉴 상단에 결과 목록을 만듭니다. 각 용어 옆에있는 X를 클릭하면 자신을 삭제하고 해당 용어와 연결된 상자의 선택을 취소합니다. 그러나 목록의 시작 부분에있는 쉼표와 콜론을 분리하면 태그가 제거 될 때까지 남아 있습니다. 나는이 문제를 다루기 위해 무거운 수작업 방법이 있지만, 훨씬 깨끗하고 빠를 수 있다고 느낀다. 그러나 내가 생각해 낸 해결책은 나에게 구문 오류를 계속 제공한다.jQuery를 사용하여 클릭시 구두점 제거하기
var divBlock = $(this).closest("h3 + div"); //finds parent h3 + div
aObject = divBlock.prev().find("a:first"); //gets the a link in the h3
originaltitle = aObject.html();
var liItems = divBlock.find("li");
for (var i = 0; i < liItems.length; i++) {
if (liItems[i].childNodes[0].checked) {
var searchterm = liItems[i].childNodes[1].innerHTML;
categoryString += "<div class='choice'>" + searchterm + "<a href=\"javascript:void(0);\" class=\"delete_search_term\" id=\"close_" + searchterm.replace(/\s/g, "-") + "\">(x)</a>,</div> ";
}
}
if (originaltitle.indexOf(": ") > 0) {
originaltitle = originaltitle.substring(0, originaltitle.indexOf(":"));
}
if (categoryString.length > 0) {
categoryString = categoryString.substring(0, categoryString.lastIndexOf(",")) + "</div>";
aObject.html(originaltitle + ": " + categoryString);
} else {
aObject.html(originaltitle.replace(":", "").trim());
}
이 코드는 문자열의 생성과 구두점의 배치를 처리하여 목록의 형식을 지정합니다. 다음 코드는 내 서브 코드를 주석 처리하지 않으면 오류를 throw하는 모든 종류의 mish-mash를 수행합니다.
$("a.delete_search_term").click(function() {
window.location = $(this).attr('href');
var itemName = this.id.replace("close_", "").toLowerCase();
var liItems = $(this).closest("h3").next().find("li");
for (var i = 0; i < liItems.length; i++) {
if (liItems[i].childNodes[0].id == itemName) {
liItems[i].childNodes[0].checked = false;
}
}
if (categoryString.length > 0) {
categoryString = categoryString.substring(categoryString.lastIndexOf(","));
subsub = categoryString.substring(0, 1);
$(subsub).remove();
}
$(this).parent().remove(); //Removes parent of selected object only
return false;
});
요청에 의해 JSFiddle을 만든 : http://jsfiddle.net/w4AxR/1/
jsfiddle을 만드시겠습니까? – twinlakes
한 항목을 제거하면 모든 항목이 jsfiddle로 사라집니다. –
그 일로 죄송합니다. 다시 넣어 둡니다. 테스트를 위해 코드를 주석 처리했습니다. – CodingCarpenter