0

午後すべて

私はいくつかのデータを持っています-

    var searchwithin = [
{id:"clearwithin", type:"button"},
    {id:"search_radius", type:"select"},
    {id:"for_lease" ,type:"checkbox"},
{id:"for_sale", type:"checkbox"},
]; 

クリックされた内容に応じて情報が表示および非表示になります(これはデータのごく一部にすぎません。

typeプロパティを確認する方法はすでに理解していますが、知りたいのは次のとおりです。

タイプがボタンの場合、そのアイテムのid値にアクセスし、クリック関数を生成して、関数を関連付けるボタンの名前としてidを使用するにはどうすればよいですか。

前もって感謝します

フィル

4

2 に答える 2

0

'#'とidプロパティを連結し、結果の文字列をセレクターとして使用します。

$.each($.grep(searchwithin, function(i) { return i.type=='button'; }), 
    function () { 
        var item = this;
        $('#'+this.id).bind('click', function(e) {
            alert('clicked: ' + item.id +' '+ item.type);
        });
    });

IDマップではなく、セレクターを使用して要素を検索することを検討してください。

$('input[type="button"].search').bind('click', onSearch);
于 2011-09-23T14:41:53.153 に答える
0

searchwithinまず、テーブルの最後の項目の後のコンマを削除して、テーブルの構文エラーを修正します。IE6/IE7でエラーが発生します。

次に、このコードを使用してsearchwithin配列を調べid、適切なを見つけて、typeそのクリックイベントハンドラーを設定できますid

var searchwithin = [
    {id:"clearwithin", type:"button"},
    {id:"search_radius", type:"select"},
    {id:"for_lease" ,type:"checkbox"},
    {id:"for_sale", type:"checkbox"}
]; 

function findIdByType(target) {
    for (var i = 0; i < searchwithin.length; i++) {
        if (searchwithin[i].type === target) {
            return(searchwithin[i].id);
        }
    }
}

var id = findIdByType("button");
if (id) {
    $("#" + id).click(function() {
        // do whatever you want to do on the click function here
    }
});

テーブルに。のエントリが2つあることに気付きましたtype:checkbox。上記のコード提案は、最初のエントリにのみ戻り、動作します。これらのIDの両方にクリックハンドラーを設定する場合は、コードまたはテーブルのいずれかを変更する必要があります。これがすべてのテーブルに使用される場合は、次のようにセレクター(複数のIDを含めることができます)に変更できます。

var searchwithin = [
    {id:"#clearwithin", type:"button"},
    {id:"#search_radius", type:"select"},
    {id:"#for_lease, #for_sale", type:"checkbox"}
]; 

function findSelectorByType(target) {
    for (var i = 0; i < searchwithin.length; i++) {
        if (searchwithin[i].type === target) {
            return(searchwithin[i].id);
        }
    }
}

var selector = findSelectorByType("button");
if (selector) {
    $(selector).click(function() {
        // do whatever you want to do on the click function here
    }
});
于 2011-09-23T14:57:36.053 に答える