3

I have the following HTML:

<div class="questionItem">
<input data-val="true" data-val-number="The field MappingId must be a number."
data-val-required="The MappingId field is required."
id="answers_2__MappingId" name="answers[2].MappingId" type="hidden" value="23" />
<input id="answers_2__Item" name="answers[2].Item" type="hidden" value="B0300" />
<input id="answers_2__SetAnswer" name="answers[2].SetAnswer" type="hidden" value="^" />
</div>

jQuery will get me all the questionItems with this:

var coll = $('.questionItem');

I don't need all of them, I simply need the questionItems that have a child input with a name of answers[/d+].SetAnswer and value of ?.

How does one construct that has() clause?

1

2 Answers 2

2

It should be something like this:

var coll = $(".questionItem").filter(function() {
    return $(this).find(":input").filter(function() {
        return /^answers\[\d+\]\.SetAnswer$/.test(this.name) && this.value == "?";
    }).length > 0;
});

DEMO: http://jsfiddle.net/nUNJd/

Sign up to request clarification or add additional context in comments.

Comments

1

Regular expressions aren't needed here. Just use :has and attribute selectors:

$(".questionItem:has(input[name$='.SetAnswer'][value='?'])");

Fiddle: http://jsfiddle.net/jonathansampson/S8kft/

1 Comment

Right on the mark! I love the jsfiddle.net site, that rock. Thanks you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.