1

私の問題はかなり単純に聞こえます。このようにIDとクラスが指定されていないdivがあります

<div style="position:relative; float:left">
    <input type="text" onfocus="renderCalendar(event);" size="50" id="cal" name="cal">
    <div class="wrappercal calwrapper">
        <div class="yearmonth">
            <table class="caltable"><tbody>
            <tr><th width="80%" scope="col" colspan="5">
                <select class="dtcombo year" onchange="changeCalendar()">
                    <option value="2000">2000</option>
                    <option value="2001">2001</option>
                </select>&nbsp;&nbsp;
                <select onchange="changeCalendar()" class="dtcombo month">
                    <option value="1">1</option>
                    <option value="2">2</option>
                 </select></th>
              </tr>
              </tbody>
              </table>
         </div>
     </div>
</div>

ページにいくつかの同様の div がある場合があります

JavaScript関数があります

function renderCalendar(event){
    var triggerer=event.target.id; // THIS WILL GIVE THE ID OF TEXTBOX THAT TRIGGERED THIS FUNCTION.
  $("#"+triggerer).parent().children(".wrappercal").children(".yearmonth").children(".caltable").children(".year").val(); //not working
}

巣はこのように続きます

  Parent Div > wrappercal(div) > yearmonth(div) > caltable(table) > year(select)

私の問題は、関数をトリガーしたテキストボックスの親divのクラス「年」でコンボの値を取得することです。

誰が私がどこで間違ったのか理解できますか? 助言がありますか?

PS私はdom要素が苦手です。

ありがとう

4

3 に答える 3

2

これを試してみませんか?

function renderCalendar(event){
    $(event.target).parent().find(".wrappercal .yearmonth .caltable .year").val(); 
}

console.log(event.target)ターゲット要素が実際に何/どこにあるべきかを確認 (使用および追跡) できますか?

編集

問題は、子ノードの 1 つのレベル (深い) のみを検索し、と( )children()の間に複数のレベルがあることです。代わりに使用します (ノードを再帰的に検索します)。;-).caltable.year<tr><th>...find()

詳細については、これを参照してください。

于 2012-09-23T06:43:20.343 に答える
1

あなたが試すことができます

$("#"+triggerer).parent().find(".year").val() instead.
于 2012-09-23T09:44:36.557 に答える
1

以下を試してください

         function renderCalendaer(event) {

           $("#"+event.target.id).parent().find(".year").val();   

                   }
于 2012-09-23T07:07:27.443 に答える