-1

このフォーラムの素晴らしい人たち (Jai、ありがとう) の助けを借りて、次のコードを作成しました。

var $someparam = 'is';
$('span').text($someparam);
$(document).on('click', 'span', function() {
    $(".somediv").not(":contains('" + $someparam + "')").addClass("hidden");
});

ここに遊び場があります: http://jsfiddle.net/DwAAQ/

コードが基本的に行うことは、変数 (="is") を取り、スパン コンテンツをその変数のテキストに置き換え、このテキストをクリックすると、変数にテキストを含まない div の非表示を実行します。私にとって、これには 2 つの主な問題があります。ページにスパンを挿入でき、CSS を編集でき、コードはページ上のすべてのスパンを置き換えてしまいます。

問題は、このコードを修正して、テキスト (=$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");
});

これが最も効率的です:

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 つの動的スパンを示しています。(1-4 をクリックしてから、新しいスパンをクリックして効果を確認します)...

いいえ、id にはコンマを含めることはできません。許可されたセット (html 仕様を参照) 内の「文字」と数字のみを含めることができ、数字以外の http://jsfiddle.net/Cecfu/1/で開始する必要があります。

于 2012-12-11T13:30:51.750 に答える
0

私があなたを正しく理解していれば、特定のテキストを特定のスパン (すべてのスパンではなく) に配置し、それらのスパンの 1 つをクリックして、その 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 に答える