2

次のように HTML コードを使用しています。

     <label style="display:inline;">Information</label>
     <a id="eventtrigger" >Click</a>

そして次のようにjquery:

    $("#eventtrigger").click(function(event){
      //event handling process
      });

要素トリガーイベントに近いラベルの値を取得したい。
つまり、ID や Class などの特定のセレクターを使用せずに、 jquery イベント処理プロセス内で値「 Infomation 」を取得する必要があります。

4

3 に答える 3

5

prevを使用して、前の要素を取得できます。

ライブデモ

 $("#eventtrigger").click(function(event){
     alert($(this).prev().text());
  });

または以前のラベルを特に探している

$("#eventtrigger").click(function(event){
     alert($(this).prev('label').text());
});
于 2012-10-11T15:19:56.323 に答える
2

使用.prev()

$("#eventtrigger").click(function(event){
     $(this).prev('label').text();
 });

.siblings()メソッドを使用することもできます

 $("#eventtrigger").click(function(event){
     alert($(this).siblings('label').text());
  });​

フィドルをチェック

于 2012-10-11T15:21:20.737 に答える
1

HTML が常にそのように見える場合は、@Adil のメソッドを使用してください。ただし、より動的にする必要がある場合は、.siblings()を使用し、単純に.first()を取得すると、それが「最も近い」ものになります。

たとえば、次のようなものを検討できます。

//  The following will grab the closest label to any a tag clicked on
$("a").on("click", function(e) {
    var closest = $(this).siblings("label").first();
    console.log(closest);
}):

ただし、ラベルの両側にラベルがある場合、それが望ましくなく、以前に最初のラベルが必要な場合 (たとえば、a タグの前に複数のラベルと p タグがある場合)、これは最初のラベル取得すると思います) 、 .prev()は a タグの前の最初の要素のみを取得するため、.prev ()を超えるものが必要です。その場合、.prevAll()を.first()と組み合わせて使用​​して、a タグの前に記述された最初のラベルを取得します。

そのような:

$("a").on("click", function(e) {
    var closest = $(this).prevAll("label").first();
    console.log(closest);
}):

もちろん、逆の場合は . nextAll()を使用できます

$("a").on("click", function(e) {
    var closest = $(this).nextAll("label").first();
    console.log(closest);
}):
于 2012-10-11T15:39:48.500 に答える