0

我有一个 div,它有一个名为“data-prototype”的属性。该属性“数据原型”包含一些 html。嵌套在该 html 中的是我要提取的选择标记。我知道如何使用 jquery 获取整个属性内容,但不知道如何获取特定标签(在我的例子中是 select 标签)。先感谢您。干杯。马克

JsFiddle:http: //jsfiddle.net/gpsw3/

我的html:

<div id="some-div" data-prototype="<div><span>something</span><select><option>opt1</option><option>opt2</option></select></div>"></div>

<a id="btn">click</a>

我的jQuery:

$(document).on({
            click: function() { 
                $container = $('#some-div');
                alert($container.attr('data-prototype'));
            }
}, '#btn');
4

3 回答 3

2

您可以从 的内容创建一个 DOM 元素data-prototype,然后找到给定的元素。

var $container = $('#some-div');
var $prototype = $("<div/>").append($container.attr("data-prototype"));
var $select    = $prototype.find("select");

或者,您可以使用.data()而不是.attr()访问data-*属性。

看这里。


澄清$("<div/>").append(...)。该.find()函数适用于后代,因此您需要包装您的内容以便能够选择data-prototype属性中的最顶层(根)元素。

于 2013-01-13T12:01:30.540 回答
0

将您的数据属性内容放在 DOM 选择器中,然后定位它

工作示例:http: //jsfiddle.net/gpsw3/3/

$(document).on({
    click: function() {
        $container = $('#some-div');
        $nestedHTML = $("<div/>").append($container.attr('data-prototype'));
        $select = $nestedHTML.find('select');
        console.log( $select);
    }
}, '#btn');
于 2013-01-13T12:09:14.823 回答
0

试试这个:http: //jsfiddle.net/gpsw3/1/

$(document).on({
        click: function() { 
            $container = $('#some-div');
            var a = $container.attr('data-prototype');
    var b = a.substr(0, a.indexOf('</div>'));
    var c = b.substr(b.indexOf('<select>'));
    alert(c);
        }
    }, '#btn');

我认为没有其他方法可以做到这一点(不确定),但这样你就可以提取你正在寻找的东西。

于 2013-01-13T11:58:49.107 回答