-1

在这个论坛好人(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。对我来说,它有两个主要问题:我可以在页面中插入 span,可以编辑 css,并且代码最终会替换页面上的所有 span。

问题是:是否可以修改此代码,使其写入文本(=$someparam 变量,或上例中的“is”)并使其可单击以执行 jquery?即一切都将包含在这段代码中?

4

2 回答 2

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,然后新建span看看效果)...

不,id 不能包含逗号,在允许的集合中只能包含“字母”(参见 html 规范)和数字,并且必须以非数字开头 http://jsfiddle.net/Cecfu/1/

于 2012-12-11T13:30:51.750 回答
0

如果我对您的理解正确,您希望将某个文本放置在某个跨度中(不是在所有跨度中),然后单击其中一个您想要隐藏所有不包含该 div 文本的 div.somediv 元素的跨度?

试试这个

$('span#myspan').text('is');
$('span#myotherspan').text('what');
$(document).on('click', 'span', function() {
    var theText = $(this).text();
    $('.somediv').not(':contains("' + theText + '")').addClass('hidden');
});
于 2012-12-11T13:29:41.067 回答