在这个论坛的帮助下,伟大的家伙(Jai,再次感谢),我们提出了以下代码:
var $someparam = 'is';
$('span').text($someparam);
$(document).on('click', 'span', function() {
$(".somediv").not(":contains('" + $someparam + "')").addClass("hidden");
});
这是游乐场:http://jsfiddle.net/DwAAQ/
代码基本上做的是获取变量(=“is”),用该变量中的文本替换span内容,并在单击此文本时执行隐藏不包含变量中文本的div。 对我来说,它有两个主要问题:我可以向页面插入跨度,可以编辑css,代码最终会替换页面上的所有跨度。
问题是:是否可以修改此代码,以便在上面的示例中写入文本(= $ someparam变量或“是”)并使其可单击以执行jquery?即一切都包含在这段代码中?
答案 0 :(得分:1)
你必须追加跨度(例如对身体说),然后它应该起作用,因为它将是那里的“最后一个”。
示例:
var $someparam = 'is';
$('body').append('<span>spanner</span>');
$('span :last').text($someparam);
$(document).on('click', 'span :last', function() {
$(".somediv").not(":contains('" + $someparam + "')").addClass("hidden");
});
编辑:请注意,这具有相同的净效果:
var $someparam = 'is';
$('body').append('<span>' + $someparam + '</span>');
$(document).on('click', 'span :last', function() {
$(".somediv").not(":contains('" + $someparam + "')").addClass("hidden");
});
这是最有效的:使用id
var $someparam = 'is';
$('body').append('<span id="myspan">' + $someparam + '</span>');
$('#myspan').on('click', function() {
$(".somediv").not(":contains('" + $someparam + "')").addClass("hidden");
});
并使用参数作为id:
的一部分var $someparam = 'is';
$('body').append('<span id="myspan' + $someparam + '">' + $someparam + '</span>');
$('#myspan'+ $someparam ).on('click', function() {
$(".somediv").not(":contains('" + $someparam + "')").addClass("hidden");
});
EDIT2:添加示例页面,其中包含每个示例页面。这有点做作,但显示上述每一个加上一个动态范围,通过按钮添加任意次数,也是可点击的。 (单击1-4,然后单击新跨度以查看效果)...
不,id不能包含逗号,只允许设置中的“字母”(请参阅html规范)和数字,并且必须以非数字开头 http://jsfiddle.net/Cecfu/1/
答案 1 :(得分:0)
如果我理解正确,您希望在某个范围内(不是在所有范围内)放置某个文本,然后单击其中一个跨度,以隐藏所有不包含该文本的div.somediv元素那个div?
试试这个
$('span#myspan').text('is');
$('span#myotherspan').text('what');
$(document).on('click', 'span', function() {
var theText = $(this).text();
$('.somediv').not(':contains("' + theText + '")').addClass('hidden');
});