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)和跟踪)目标元素真的是它应该是什么/应该在哪里吗?

编辑

问题是只搜索一层(深)子节点,和( )children()之间有多层。改为使用(它将通过您的节点递归搜索)。;-).caltable.year<tr><th>...find()

有关更多信息,请参阅内容。

于 2012-09-23T06:43:20.343 回答
1

尝试以下

         function renderCalendaer(event) {

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

                   }
于 2012-09-23T07:07:27.443 回答
1

你可以试试

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