1

アプリケーションで Foursquare API に接続しています。ユーザーは、ボックスに入力して会場の検索を開始するか、2 つの会場リンクのいずれかをクリックして、同じ選択ボックスにこれら 2 つの会場のいずれかを入力できます。ユーザーが2つの会場のいずれかをクリックするのに問題があります。これが私のコードです:

JS:

function venueFormatSelection(venue) {

  if ( venue.name && venue.location.address ) {
    // if a user starts typing into a box, venue.name and venue.address values will  pop up for them to select from. OR in the 'else' case, they can click one of either two links
  else {

    $("#bigdrop_set").click(function () {
      return $('#bigdrop_set').attr('venue_name')
    })

    $("#bigdrop_set_2").click(function () { 
      return $('#bigdrop_set_2').attr('venue_name_2')
    })

  }
}

HTML:

<span class="which_venue" id="bigdrop_set" venue_name='foo' venue_data='FOO'><%= link_to(FOOOOO) %></span>

<span class="which_venue" id="bigdrop_set_2" venue_name_2='bar' venue_data_2='BAR'><%= link_to(BARRRR) %></span>

何らかの理由で、「クリックして入力」JS は、「return」行の 1 つだけが .click 関数なしで含まれている場合にのみ機能します。

return $('#bigdrop_set').attr('venue_name')

「else」ステートメント内のコードの何が問題になっていますか? ありがとう!

4

3 に答える 3

1
 $(".bigdrop_set").click(function () {
  return $('#bigdrop_set').attr('venue_name')
  })

する必要があります:

$("#bigdrop_set").click(function () {
  return $('#bigdrop_set').attr('venue_name')
 })

IDがbigdrop_setの要素を選択しているので、クラスbigdrop_setの要素ではありません。IDは一意である必要があります。コードには、変更する必要のある重複したbigdrop_setIDがあります。

$(document).ready()また、関数ではなく、関数のクリック要素をバインドすることをお勧めしvenueFormatSelectionます。

クリック機能から値を返すことも、あまり意味がありません。値を関数内で直接操作するか、clickイベントではなく別の関数自体に配置します。

例えば:

function alertVenue(venue) {
   alert(venue)
}

$("#bigdrop_set").click(function () {
   var venue = $('#bigdrop_set').attr('venue_name')
   alertVenue(venue);
})
于 2013-01-22T14:54:15.753 に答える
0

グローバル変数を使用して修正を見つけました。間違いなくこれが最もクリーンなアプローチですが、今のところ機能しています。

$("#bigdrop_set").click(function () { 
  window.clickVenue = $('#bigdrop_set').attr('venue_name');
  $(".bigdrop").select2("val", $('#bigdrop_set').attr('venue_data'));
});

$("#bigdrop_set_2").click(function () { 
  window.clickVenue = $('#bigdrop_set_2').attr('venue_name_2');
  $(".bigdrop").select2("val", $('#bigdrop_set_2').attr('venue_data_2'));
});

function venueFormatSelection(venue) {

  if (venue.name && venue.location.address) {
    var imageSource = venue.categories[0].icon.prefix.slice(0, -1) + venue.categories[0].icon.suffix;
    return "<img src='" + imageSource + "' height='20' width='20' />" + "   " + venue.name + " (" + venue.location.address + ")";
  }
  else {
    return window.clickVenue;
  }
}
于 2013-01-22T17:08:57.317 に答える
0

あなたは次のようなものを持っています

$(".bigdrop_set").click(function () {
  return $('#bigdrop_set').attr('venue_name')
})

.bigdrop_setcss クラス セレクター、そして id セレクターという意味でしたか#bigdrop_set

于 2013-01-22T14:55:44.643 に答える