如何在html中点击.makhzan
或111
或222
之后删除类333
中的类似元素(ul)?
演示: http://jsfiddle.net/nkNbc/
我的尝试:
$('.class_show .tooltip_hover').live('click change', function(){
$(this).closest('ul').remove();
var value_bet = $(this).text();
$(".makhzan .tooltip_hover li").filter(function () {
var get = $(this).text() == value_bet;
return get.closest('ul'); // This doesn't work for remove element ul
}).remove();
});
答案 0 :(得分:0)
filter()函数希望您的回调函数返回true
或false
。您应该返回get
,然后删除已过滤集合上的closest('ul')
。
$('.class_show .tooltip_hover').live('click change', function(){
$(this).closest('ul').remove();
var value_bet = $(this).text();
$(".makhzan .tooltip_hover li").filter(function () {
return $(this).text() == value_bet;
}).closest('ul').remove();
});
答案 1 :(得分:0)
也许这会对你有帮助,我不确定
$('.class_show .tooltip_hover li').click(function() {
var li_text = $(this).text();
$('.makhzan .tooltip_hover li').each(function() {
if($(this).text() == li_text){
$(this).remove();
}
});
});
仅当文本完全相同时才会起作用。
也许您必须使用其他类型的比较
答案 2 :(得分:0)
尝试使用:contains
来回避过滤器功能:
$('.class_show .tooltip_hover').live('click change', function(){
$(this).closest('ul').remove();
var value_bet = $.trim($(this).text());
$('.makhzan .tooltip_hover li:contains("'+value_bet+'")')
.closest('ul').remove();
});
http://jsfiddle.net/mblase75/nkNbc/4/
但是,如果您使用的是jQuery 1.7,您可能也习惯使用.on
代替.live
:
$(document).on('click change', '.class_show .tooltip_hover', function() {
...
});
http://jsfiddle.net/mblase75/nkNbc/5/
<强>更新强>
根据nachito的评论 - 如果我正在构建此内容,我会为每个data-key="1"
分配一个<li>
之类的属性并与之匹配,而不是尝试匹配HTML的确切文本内容元素并冒着不匹配的风险:
$(document).on('click change', '.class_show .tooltip_hover', function() {
$(this).closest('ul').remove();
var value_bet = $(this).find('li').data('key');
$('.makhzan .tooltip_hover li[data-key="' + value_bet + '"]')
.closest('ul').remove();
});