2011-10-31 108 views
3

我对此有点难住。我想创建一些元素(使用jQuery),在该包装集上调用一个函数,并通过一个链多次继续这个过程。例如,如何创建元素并使用jQuery动态选择它们

$('<div id="xxx"></div>') 
    .call_plugin() 
    .append('<div id="yyy"></div>') 
    .call_plugin() 
    .etc... 
.end(); 

第一次调用插件影响xxx,第二次影响yyy等等。但是这没有发生;我认为每次都会在第一个div(id = xxx)上调用call_plugin()。有没有解决方法?

在此先感谢!

+0

.append()实际上是 “糊” YYY insdes XXX,并返回新的XXX。所以第二个call_plugin会影响新的xxx。 – roselan

回答

3

jQuery的电话再次对于其它元素,与.append执行某些功能,并添加这些:

$('<div id="xxx"></div>') 
    .call_plugin() 
    .append(
    $('<div id="yyy"></div>') 
    .call_plugin() 
); 

可以嵌套他们以同样的方式:

$('<div id="xxx"></div>') 
    .call_plugin() 
    .append(
    $('<div id="yyy"></div>') 
    .call_plugin() 
    .append(
     $('<div id="zzz"></div>') 
     .call_plugin() 
    ) 
); 

只是不要忘记不在嵌套append之后放置;s。

2
$('<div id="xxx"></div>') 
    .call_plugin() 
    .append('<div id="yyy"></div>') 
    .find('#yyy') // added this. From now on the current selection is #yyy element 
    .call_plugin(); // this will be called on #yyy 

.end()方法(即在结尾使用)来结束链当前的选择,如果你想继续使用相同链的前一个...

在您的例子

$('<div id="xxx"></div>') 
    .call_plugin() 
    .append('<div id="yyy"></div>') 
    .find('#yyy') // added this. From now on the current selection is #yyy element 
    .call_plugin() // called on #yyy 
    .end() // this returns the selection to be #xxx 
    .something()//something else that will be called on #xxx 
+0

这是一个艰难的呼吁。我认为这个答案更简单,但我无法实现它的工作。 (并不代表它也是错的!)+1,并且感谢您的回复! – maximus