1

私が開発しているツールの次の html 出力があります。

<button>a</button>
<script>$('what to wrtie here to select the previous button element?').click(function(){alert ('a clicked !');});</script>
<button>b</button>
<script>$('same here').click(function(){alert ('b clicked !');});</script>

script前の要素を選択するには、各タグにセレクターが必要です。idツールは要素の ID を生成しないため、セレクターの使用は適用できません。

ありがとう。

答え:

$('script').last().prev().click(...

ニクラスが言ったように、現在実行されているスクリプトはリストの最後のスクリプトです

4

3 に答える 3

3

これは、ボタン オブジェクトまたはスクリプト タグ自体への id またはその他の種類の参照なしでは不可能です。

スクリプトは、その要素が DOM 内にある場所から実行されないため、実行できません。代わりに、ウィンドウ全体を参照して実行されます。

実際、ここにかなり良い答えがあります:現在実行中のスクリプトをロードしたスクリプトタグを参照するにはどうすればよいですか?

つまり、現在実行中のスクリプトはリストの最後の要素です。

于 2012-12-06T11:29:23.227 に答える
1

私が知っているこれを行う方法 (スクリプトを含むスクリプト タグを参照) はありません。ここでの最善のアプローチは、要素ごとに ID を生成し、スクリプトを 1 つのスクリプト タグに集約することです。


それが正しい解決策です。秘密のいたずらな解決策はこれです(ネタバレ):

<button>a</button> 
<script> //スクリプト#0001 $('script:contains("#0001")').prev().click(関数(){ アラート('foo'); });
</script>

<button>b</button>
<script> //スクリプト#0002 $('script:contains("#0002")').prev().click(関数(){ アラート ('バー');
});
</script>

使用しないでください

于 2012-12-06T11:25:39.567 に答える
1

readyまあ、私はあなたが何をしているのかを本当にお勧めしません。最初にあなたのアプローチについて話しましょDOMう。コードが含まれていたスクリプトタグ


すべてのスクリプトタグを独自のファイルに移動し、セレクターを使用して必要な要素を選択するかprevnextparents、 などを使用して動的に選択する必要があります

編集

スクリプトタグを取得できないことについては間違っています@Niklasの答えは正しいものですが、それでもそうするのは非常に間違っていると考えています

于 2012-12-06T11:30:44.117 に答える