【问题标题】:Searching jQuery variable full of html [duplicate]搜索充满html的jQuery变量[重复]
【发布时间】:2012-09-28 12:36:40
【问题描述】:

这可能是一个奇怪的问题——现在我有一个充满 HTML 的变量,我想使用 jQuery(或 JS)在该变量中搜索带有复选框的输入,并返回信息。

所以:

alert($(this).parent().parent().html())
var thisIsThat = $(this).parent().parent().html();
alert(thisIsThat)
var Awesome = $(thisIsThat).find('input:checked');

然后在获得该变量后,在成功调用 ajax 后,我想更改其中的特定属性,如下所示:

$(Awesome).attr('value', 'false');

现在,“真棒”没有返回任何内容,这不允许我像我想要的那样更改属性。我也可能走错了方向——感谢任何建议!

【问题讨论】:

  • thisIsThat 不是DOM 的一部分
  • 先找出你从哪里开始..所以console.log($(this))..然后从那里开始
  • @Shusl 如何在 jQuery 中定位 thisIsThat?在警报期间它输出正确的html?
  • 如果你这样做 $(thisIsThat).find('input') 它会返回你期望的项目数吗?如果不是,则您的复选框实际上并未被选中。看到“thisIsThat”中的 html 肯定会有所帮助。
  • @Nick 为什么不使用实际的 DOM 元素 - $(this).parent().parent() - 而不是它的 HTML?

标签: javascript jquery ajax function variables


【解决方案1】:

使用这个

var thisIsThat = $(this).parent().parent();
alert(thisIsThat)
var Awesome = $(thisIsThat).find('input:checked');

在这种情况下,thisIsThat 是一个对象,您可以使用该对象找到任何东西

【讨论】:

  • 感谢您的帮助!这非常有效。我刚刚删除了 ':checked' 选择器,因为我想同时点击选中和未选中的输入(并且这一行中只有一个输入)。
【解决方案2】:

这是一个示例,显示了从字符串中运行的相同基本思想,该字符串发现复选框正常并取消选中它。

<div id="out"></div>​
<script>
    var htmlStr = '<div><input type="checkbox" checked="checked"/></div>';
    var temp = $(htmlStr);
    var cb = temp.find("input:checked");
    cb.attr("checked",false);
    jQuery("#out").append(cb);
</script>

jsfiddle

我打赌的问题是您正在手动选中复选框。当你这样做时,它不会更新 DOM 属性。

这是一个向您展示问题的基本示例。

<div id="one">
    <input type="checkbox" />
</div>
<button>Tell</button>​

<script>
    function tellMe(){
        var myDiv = jQuery("#one");
        var html1 = myDiv.html();
        console.log(html1);
    }

    jQuery("button").click(tellMe);  
</script>

看看上面代码的fiddle

打开控制台,然后单击按钮。您将看到它未选中。勾选复选框并再次单击按钮,即使勾选了复选框,也会输出相同的html。

【讨论】:

  • 感谢您对此的帮助!我在循环中运行代码,所以我相信它会定期更新,所以其他解决方案有效。再次感谢您!
【解决方案3】:

改变

var Awesome = $(thisIsThat).find('input:checked');

var Awesome = $(thisIsThat).find('input[type=checked]');

now loop over it

Awesome.each(function(){
  if($(this).is(':checked'))
    {
     $(this).attr('checked',false);
    }
});

【讨论】:

  • 我对正则表达式不太熟悉,我猜除了验证。在这种情况下如何使用正则表达式?
  • -1 推荐使用 Regex 解析 HTML。
猜你喜欢
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2016-10-06
  • 2013-06-09
  • 2014-10-10
相关资源
最近更新 更多