如何使用jQuery将div移动到唯一的li id

时间:2015-11-17 23:09:27

标签: javascript jquery html

我有这个HTML,来自id的{​​{1}}是从PHP自动生成的。

li

我想将<ul> <li id="1">content</li> //comment <div id="will-append-to-li-id-1"></div> //parent comment <li id="2">content</li> <li id="3">content</li> //comment <div id="will-append-to-li-id-3"></div> //parent comment <li id="..">more content</li> </ul> 移至div并试用此方法:

li id="1"

这种方法很好,但$(document).ready(function () { $("ul > li + div#will-append-to-li-id-1").appendTo("ul > li"); }); 也转移到divli id="2"等等。 如何使div仅移至li id="3"

更新

这个实际的HTML代码:

li id="1"

我想将<ul class="comment-list"> <li id="li-comment-1"> <div class="content-comment">comment text here</div> </li> <ol class="child-comment"> <!-- child from li-comment-1 --> <div class="the-child-comment">parent comment text here</div> </ol> <li id="li-comment-2"> <div class="content-comment">comment text here</div> </li> <li id="li-comment-3"> <div class="content-comment">comment text here</div> </li> <ol class="child-comment"> <!-- child from li-comment-3 --> <div class="the-child-comment">parent comment text here</div> </ol> </ul> 移至<div class="the-child-comment"> 感谢。

3 个答案:

答案 0 :(得分:1)

只需指定#1?

$(document).ready(function () {
   $("ul > li + div#will-append-to-li-id-1").appendTo("ul > li#1");
});

修改:根据您的评论,尝试以下内容:

$(document).ready(function () {
   $lis = $("ul > li");
   $li = $($lis[0]); // to get the first li
   $("ul > li + div#will-append-to-li-id-1").appendTo($li);
});

答案 1 :(得分:0)

这会将div的所有ulli移至上一个$(document).ready(function() { $('ul div').each(function() { $(this).appendTo($(this).prev('li')); }); });

li

请注意,只允许ul$(document).ready(function() { $('ul div').each(function() { $(this).appendTo($(this).prev('li')); }); });的直接子项,因此最好修改生成无效HTML的PHP​​代码。

<强>段:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li id="1">content</li>//comment
  <div id="will-append-to-li-id-1"></div>//parent comment
  <li id="2">content</li>
  <li id="3">content</li>//comment
  <div id="will-append-to-li-id-3"></div>//parent comment
  <li id="..">more content</li>
</ul>
func getRequest(token:String, url:String, callback:(NSDictionary) -> ()){
    let request = NSMutableURLRequest(URL: NSURL(string: url)!)
    request.HTTPMethod = "GET"
    request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in

        if data != nil && response != nil{
            do{
                let responseTest = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary
                if responseTest != nil{
                    let response:NSDictionary = responseTest!
                    callback(response)
                }
            } catch let error as NSError{
                print("A JSON parsing error occured: \(error)")

            }
        } else {
            callback(NSDictionary())
        }
    }
    task.resume()
}

答案 2 :(得分:0)

这是您的答案,考虑对您的代码进行最少的更改:

<li id="1">content<div id="will-append-to-li-id-1"></div></li>

但为了使您的代码更清晰,首先不建议使用数字作为您的ID,所有浏览器都不支持此功能,但希望您在此处仅使用这些数字进行简化。 (确保你的id以字母开头)。

另外,你显示这个的方式不是.append()的工作方式,.append()实际上会在列表项中添加div,所以它看起来像这样:

.appendTo('ul > li:first-child');

如果您想要发生的是您在示例中显示的内容,那么您需要使用.insertAfter()代替。

您也可以使用

_