0

我有以下代码:

    <ul>
    <li id="1">same html structure as below...</li>
    .....
    <li id="42">
    <div class="input-prepend">
       <button class="btn btn-small companyListBtn addMarkerBtn btn-primary btn-warning" type="button">   </button>                                                                                   
       <input class="input-medium companyListInput" maxlength="60" type="text"/>
       <button class="companyListBtn editCompanyBtn" type="button"></button>
    </div>
    <div id="42Div" class="companyAddressDiv">
       <input type="text" id="test" class="companyAddress" placeholder="Enter the Address"/>
       <button  class="btn btn-small compAddressSubmit" style="height:30px;margin-top:-9px;" type="button"></button>
    </div>
    </li>
    </ul>

现在在下面的代码中,我试图更改位于同一列表中的addMarkerBtn上的信息.... :(因为有多个具有相同结构的列表)

 $(document).on('click','.compAddressSubmit', function () {
    var addMarkerBtn = $(this).prev("div.row").find('.addMarkerBtn');
    //wanna make changes to the addMarkerButton .. something like..
    addMarkerBtn.removeClass('btn-primary btn-warning').addClass('btn-success');
    }

尝试了最接近(),下一个(),但无法让它工作。任何帮助请...

4

3 回答 3

5

父母

 var addMarkerBtn = $(this).parents("li").find('.addMarkerBtn');
于 2013-01-15T12:58:14.073 回答
0

尝试这个

var addMarkerBtn = $(this).parents().eq(2).find('.addMarkerBtn');
于 2013-01-15T13:01:51.947 回答
0

如果有多个 div 包含#compAddressSubmit,则您的文档无效。id必须是唯一的。听起来你的按钮id compAddressSubmit应该把它作为一个类来代替。

假设您进行了更改,那么:( 我看到您在问题中进行了更改。)

所以:

$(document).on('click','.compAddressSubmit', function () {
    var addMarkerBtn = $(this).closest("div.companyAddressDiv").prev().find('.addMarkerBtn');
    addMarkerBtn.removeClass('btn-primary btn-warning').addClass('btn-success');
}

$(this).closest("div.companyAddressDiv")找到companyAddressDiv包含按钮。prev转到前一个元素(在div它上面),然后在该元素中find(".addMarkerBtn")找到按钮div

如果结构有可能发生变化,使得 之前的元素div.companyAddressDiv不是您想要的,您可以使用.prevAll("div.input-prepend").first()div而不是.prev().

于 2013-01-15T12:57:02.057 回答