【问题标题】:JS: function for every ul in variableJS:变量中每个ul的函数
【发布时间】:2014-05-03 04:15:56
【问题描述】:

我有这个 javascript (jquery),我在其中定义了一个变量。此变量包含一个字符串,其中可能包含一个或多个 ul。我希望脚本选择每个 ul 并为每个 ul 运行一个函数。

但不幸的是,加载页面时没有任何反应。

<script type="text/javascript">
    var wid_tekst1 = "<?php echo $wid_tekst1; ?>";
    $(wid_tekst1).find('ul').each(function() {
        alert('hoi');
    })
</script>

$wid_tekst1 包含:

<p>test tekst 1</p>
<ul>
    <li>testitem</li>
    <li>testitem</li>
    <li>testitem</li>
    <li>testitem</li>
    <li>testitem</li>
    <li>testitem</li>
    <li>testitem</li>
</ul>
<p>test</p>

谢谢

【问题讨论】:

  • Javascript 不支持多行字符串。如果你的 php 变量就像你展示的那样使用,它永远不会起作用。
  • @Karl-AndréGagnon,我只是将它设置为多行以使其可读。实际上,它只是一行。

标签: javascript jquery function html-lists each


【解决方案1】:

由于uls 是集合中的顶级元素,您应该使用filter 而不是find 方法。如果要使用find 方法,可以将字符串设置为另一个元素的innerHTML

$('<div/>').html(wid_tekst1).find('ul').each(func); 

【讨论】:

  • 感谢工作!不知道过滤方法。所以要明确一点,find-method 仅适用于定义为 html 的变量,而 filter-method 适用于所有变量?我会在几分钟内接受你的回答...
  • @user3235648 不客气,实际上区别在于 jQuery 集合中元素的级别。 find 选择集合元素的匹配的后代元素filter 过滤集合中的元素
【解决方案2】:

如果那里存在 UL 对象,您可以直接查询 dom。

$("ul")

或者您可以将您的 html 字符串放入一个 JQuery 对象中,例如 https://stackoverflow.com/a/11047751/3066711

$('<div/>').html(wid_tekst1).find("ul")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    相关资源
    最近更新 更多