2017-10-16 14 views
-1

をクリック取得する方法を、私は(1)(2)をこの問題を解決しようとすると、他の同様のStackOverflowの質問を見直す時間を費やしているが、どれも私の問題に答えを持っているように見えるん..jQueryの+ Railsの:ボタンのユーザーのIDが

Iこのエラーを回避することはできません:ReferenceError: id is not defined。アラートは表示されません。

$("button.btn-tag-cat").click(function(e){ 
    e.preventDefault(); 
    var id = $(this).prop('id'); 
    alert(id); 
    id.find('span').show(); 
    }, function(){ 
    id.find('span').hide(); 
    }); 

私はid変数を使用するのに次の方法を試しましたが、何もしませんでした。私は、アラート以下のコードの塊を取り除くとき

$(id).find('span').show(); 
$("#" + id).find('span').show(); 

しかし、は、アラートがボタンに属する正しいIDとポップアップします。

$("button.btn-tag-cat").click(function(e){ 
    e.preventDefault(); 
    var id = $(this).prop('id'); 
    alert(id); 
    }); 

部分ビュー: ボタンID参照ルビーローカル変数id="<%= name %>"

<% q.categories_name_in.each do |name| %> 
    <button type="button" class="btn btn-outline-primary btn-lg btn-tag-cat" id="<%= name %>"><%= name %><span class='glyphicon glyphicon-remove'></span></button> 
    <% end %> 

答えて

2

あなたが述べてきたように、エラーは、クリックリスナーの関数を連鎖されます。あなたのコードでは、私はあなたを見て、それを美化し、

ここ
$("button.btn-tag-cat").click(function(e) { 
    e.preventDefault(); 
    var id = $(this).attr('id'); 
    alert(id); 
    $('#' + id).find('span').show(); 
}); 

$("button.btn-tag-cat").click(function(e) { 
 
    e.preventDefault(); 
 
    var id = $(this).attr('id'); 
 
    alert(id); 
 
    $('#' + id).find('span').show(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button class="btn-tag-cat" id="hallo">Press</button>

1

id属性を取得するためには、あなたは次のように、jQueryのattr機能を使用することができます間違い:

$("button.btn-tag-cat").click(
    function(e) { 
    e.preventDefault(); 
    var id = $(this).prop('id'); 
    alert(id); 
    id.find('span').show(); 
    }, 

    function() { 
    id.find('span').hide(); 
    } 
); 

アイス第二の機能は

function() { 
    id.find('span').hide(); // right here 
    } 

を持っていますが、idがまだ定義されていない

function() { 
    var id = $(this).prop('id'); // this first 
    id.find('span').hide(); 
    } 
+0

明確な回答のおかげで、しかし、私は今、このエラーを取得しています試してください:TypeError例外:id.findを関数ではありません – doyz

+0

idの代わりに '$(id)'を使用してください。 –

+0

IDは文字列です。 '$( '#' + id).find(...)'を使ってください。 –